SA0077:枚举类型与不匹配 CASE
表情
检测代码位置,其中 CASE
语句将枚举值与非枚举类型混合在一起。
理由:在 CASE 结构中混合枚举值和整数值会违反数据类型安全性,降低代码的可读性并影响可维护性。枚举值确保语义清晰度。使用原始整数值会带来小错误的风险,并使代码更难理解。枚举的数据类型更改也会破坏基于整数的分支,而这些分支可能会
重要性:低
例 84. 例子
{attribute 'qualified_only'} {attribute 'strict'} TYPE DUT_MyEnum : ( One := 1, Two := 2, Three := 3, Four := 4 ); END_TYPE
PROGRAM PRG_Case VAR diVar : DINT; xTemp : BOOL; eMyEnum : DUT_MyEnum; END_VAR
CASE diVar OF 1 : xTemp := FALSE; DUT_MyEnum.Two : // SA0077 xTemp := TRUE; ELSE xTemp := NOT xTemp; END_CASE CASE eMyEnum OF 1 : // SA0077 xTemp := FALSE; DUT_MyEnum.Two: xTemp := TRUE; ELSE xTemp := NOT xTemp; END_CASE
输出在 留言 看法:
SA0077:类型与 CASE 表达式不匹配