SA0033:未使用の変数 宣言されているが、コンパイルされたプログラムコード内で使用されていない変数を決定します。 理論的根拠:未使用の変数は、プログラムを読みにくくし、保守しにくくします。使用されない変数は、メモリを不必要に占有し、初期化中に実行時間のコストを不必要に消費します。 重要性:中 PLCopenルール:CP22 / CP24 ヒント GVL変数の場合:プロジェクトに複数のアプリケー
SA0035:未使用の入力変数 関数ブロックインスタンスで使用されない入力変数を決定します。 理論的根拠:未使用の変数は、プログラムを読みにくくし、保守しにくくします。使用されない変数は、メモリを不必要に占有し、初期化中に実行時間のコストを不必要に消費します。 重要性:中 PLCopenルール:CP24 例 43 . 例 FUNCTION_BLOCK FB_Afb VAR_INPUT iIn1:
SA0036:未使用の出力変数 関連する機能または機能ブロック内で割り当てられていない機能および機能ブロックの出力変数を決定します。 理論的根拠:未使用の変数は、プログラムを読みにくくし、保守しにくくします。使用されない変数は、メモリを不必要に占有し、初期化中に実行時間のコストを不必要に消費します。 重要性:中 PLCopenルール:CP24 例 44 . 例 FUNCTION_BLOCK FB_
SA0090: 関数終了前の RETURN ステートメント コードの場所を検出します。 RETURN ステートメントは、関数、メソッド、プロパティ、またはプログラムの最後のステートメントではありません。設置場所 RETURN 内に存在します IF ブランチも検出されます。 理由:A RETURN コード内にあると、コードの保守性、テスト性、および可読性が低下します。 A RETURN コード内は簡
SA0100:<n>バイトより大きい変数 nバイトを超える変数を検索します。ここで、nは現在の構成で指定されます。デフォルト:1024バイト。行をダブルクリックすると、値を変更できます。 理論的根拠:一部のプログラミングガイドラインでは、単一の変数の最大サイズが設定されています。これはここで確認できます。 重要度:低 例 88 . 例 PROGRAM PLC_PRG VAR aobyTest :
SA0161:パック構造のアンパック構造 パック構造で使用されるアンパック構造を決定します。 理由: コンパイラは通常、アンパックされた構造体を、構造体内のすべての要素への整列されたアクセスを許可するアドレスに設定します。この構造をパック構造で作成すると、整列アクセスは不可能になります。さらに、アンパックされた構造内の要素にアクセスすると、「不整列例外」が発生する可能性があります。 重要性:高い
SA0163:ネストされたコメント ネストされたコメントを検出します。 理論的根拠:ネストされたコメントは読みにくいため、避ける必要があります。 重要度:低 PLCopenルール:C3 例 120 . 例 {attribute 'do-analysis'} (* That is (* nested comment 1 *) *) PROGRAM PLC_PRG VAR (* That is //
SA0164:複数行コメント で始まる複数行のコメントを検索します (* comment *) エンコードされます。で始まる単一行のコメントのみが許可されます // comment エンコードされます。 理論的根拠:一部のプログラミングガイドラインでは、コメントの最初と最後が見えなくなったり、エラーによって終了コメントブラケットが削除されたりする可能性があるため、コード内の複数行コメントを禁止して
SA0055:符号なしオペランドの不要な比較演算 符号なしオペランドとの不要な比較を検出します。符号なしデータ型がゼロ未満になることはありません。これは、サインチェックとして使用できます。 理由:このチェックで検出された比較は一定の結果を返し、これはコードのエラーを示します。 重要性:高い 例 64 . 例 PROGRAM PLC_PRG VAR byTest: BYTE; END_VAR //
SA0056:定数が範囲外 演算子の範囲外のリテラル(定数)を検索します。 理由:このメッセージは、値がこの値の値の範囲外にある定数と比較された場合に発行されます。その後、比較は定数を返します TRUE また FALSE 。これはプログラミングエラーを示しています。 重要性:高い 例 65 . 例 PROGRAM PLC_PRG VAR byTestVar: BYTE; END_VAR WHILE