Skip to main content

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

输出在 留言 看法:

  • sa_icon_message.png SA0077:类型与 CASE 表达式不匹配