检测从有符号数据类型到无符号数据类型的显式转换,以及反向转换
理由过多地使用类型转换可能表明你为变量选择了错误的数据类型。因此,有一些编程指南要求明确说明数据类型转换的理由。
重要性:低
示例
PROGRAM PLC_PRG VAR byVar :BYTE; udiVar : UDINT; uliVar : ULINT; lwVar : LWORD; wVar : WORD; siVar : SINT; iVar : INT; diVar : DINT; liVar : LINT; END_VAR liVar := ULINT_TO_LINT(uliVar); udiVar := DINT_TO_UDINT(diVar); siVar := BYTE_TO_SINT(byVar); wVar := INT_TO_WORD(iVar); lwVar := SINT_TO_LWORD(siVar); --> SA0134: Explicit signed/unsigned conversion from type 'ULINT' to type 'LINT' --> SA0134: Explicit signed/unsigned conversion from type 'DINT' to type 'UDINT' --> SA0134: Explicit signed/unsigned conversion from type 'BYTE' to type 'SINT' --> SA0134: Explicit signed/unsigned conversion from type 'INT' to type 'WORD' --> SA0134: Explicit signed/unsigned conversion from type 'SINT' to type 'LWORD'