SA0073:非一時的なカウンター変数の使用 の非一時変数の使用を検出します FOR -グラインド。 理由:これはパフォーマンスの警告です。カウンタ変数は、プログラミングブロックが呼び出されるたびに常に初期化されます。このような変数を一時変数として使用できます( VAR_TEMP )、アクセスが高速になる可能性があり、変数は永続的なメモリスペースを占有しません。 重要性:中 PLCopenルール:
SA0075:ELSEがありません 決定 CASE -なしの指示 ELSE -ブランチ。 理論的根拠:防御的なプログラミングには、 ELSE それぞれに CASE -命令。もし私が ELSE -何もすることがない場合は、コメントでマークする必要があります。そうすれば、コードの読者には、事件が単に忘れられたのではないことが明らかになります。 重要度:低 PLCopenルール:L17 重要 For C
SA0076:列挙定数がありません 各列挙定数が条件として使用されるかどうかを決定します。 CASE ステートメントとクエリ CASE 支店。 理論的根拠:防御プログラミングでは、列挙型のすべての可能な値を処理する必要があります。特定の列挙値にアクションが必要ない場合は、コメントで明示的にマークする必要があります。そうすれば、コードの読者には、値が単に忘れられたのではないことが明らかになります。
SA0077:CASE式のデータ型の不一致 条件のデータ型がdesのデータ型と一致しないコード位置を検索します CASE -ブランチの一致。 理由:データ型が CASE -変数と CASE -一致しない場合は、エラーを示している可能性があります。 重要度:低 例 83 . 例 TYPE My_Enum : ( eins := 1, zwei := 2, drei := 3, vier := 4 )
SA0078:CASEブランチのないCASEステートメント 決定 CASE -なしの指示 CASE -ブランチと1つだけ ELSE -命令。 理由: A CASE ケースのないステートメントは実行時間が無駄になり、読みにくくなります。 重要性:中 例 84 . 例 PROGRAM PLC_PRG VAR iVar : INT; xTemp : BOOL; END_VAR iVar := iVar
SA0118:定数を使用しない初期化 定数を割り当てない初期化子を検索します。 理由:初期化は可能な限り一定であり、他の変数を参照しないようにする必要があります。特に、初期化中の関数呼び出しは、初期化されていないデータへのアクセスにつながる可能性があるため、避ける必要があります。 重要性:中 例 109 . 例 PROGRAM PLC_PRG VAR dwTemp : DWORD := 22; d
SA0124:宣言部分でのポインターの間接参照 宣言部分の初期化に使用されるポインター逆参照を決定します。 理由: ポインターと参照は初期化に使用しないでください。ポインターが初期化されていない場合、アクセス違反が発生する可能性があります。 重要性:中 例 110 . 例 TYPE TESTSTRUCT : STRUCT xA : BOOL; xB : BOOL; END_STRUCT END_T
SA0125:初期化の参照変数 宣言部分の初期化に使用される参照変数を決定します。 理由: ポインターと参照は初期化に使用しないでください。ポインターが初期化されていない場合、アクセス違反が発生する可能性があります。 重要性:中 例 111 . 例 TYPE TESTSTRUCT : STRUCT xA : BOOL; xB : BOOL; END_STRUCT END_TYPE FUNCTION
SA0140:ステートメントがコメントアウトされました コメントアウトされたステートメントを検索します 理論的根拠:コードは、デバッグ目的でコメントアウトされることがよくあります。そのようなコメントがリリースされたとき、コードを削除する必要があるのか、それともデバッグ目的でコメントアウトされて誤ってコメントされていないのかは後で不明になります。 重要性:高い PLCopenルール:C4 例 112
おそらく初期化されていない変数が使用されています このセクションの内容 :