SA0107:正式なパラメータがありません 正式なパラメーターが欠落しているかどうかを判別します。 理由: 呼び出しで仮パラメータを指定すると、コードが読みやすくなります。 重要度:低 例 94 . 例 FUNCTION FUNA : BOOL VAR_INPUT bDo : BOOL; bInit : BOOL; bManual : BOOL; END_VAR VAR iInit : INT;
SA0161:パック構造のアンパック構造 パック構造で使用されるアンパック構造を決定します。 理由: コンパイラは通常、アンパックされた構造体を、構造体内のすべての要素への整列されたアクセスを許可するアドレスに設定します。この構造をパック構造で作成すると、整列アクセスは不可能になります。さらに、アンパックされた構造内の要素にアクセスすると、「不整列例外」が発生する可能性があります。 重要性:高い
SA0162:コメントがありません プログラム内のコメントされていない位置を決定します。 理論的根拠:多くのプログラミングガイドラインでは完全なコメントが必要であり、コードの可読性と保守性が向上します。 重要度:低 PLCopenルール:C2 コメントが必要です 変数の宣言。コメントはその上または右側にあります。 プログラム、関数ブロック、またはメソッドの宣言。コメントは宣言の上にあります(最初の
SA0163:ネストされたコメント ネストされたコメントを検出します。 理論的根拠:ネストされたコメントは読みにくいため、避ける必要があります。 重要度:低 PLCopenルール:C3 例 120 . 例 {attribute 'do-analysis'} (* That is (* nested comment 1 *) *) PROGRAM PLC_PRG VAR (* That is //
SA0164:複数行コメント で始まる複数行のコメントを検索します (* comment *) エンコードされます。で始まる単一行のコメントのみが許可されます // comment エンコードされます。 理論的根拠:一部のプログラミングガイドラインでは、コメントの最初と最後が見えなくなったり、エラーによって終了コメントブラケットが削除されたりする可能性があるため、コード内の複数行コメントを禁止して
SA0165:プログラム以外のPOUを呼び出すタスク このチェックは、プログラムの代わりに関数ブロックまたは関数を呼び出すタスクを識別します。 理由:このルールはPLCopenコーディングガイドラインの一部であるため、コンプライアンスも含まれています CODESYS チェックしました。で見る CODESYS タスクがプログラム以外のPOUを呼び出す場合、データの整合性に関する問題はありません。ただ
SA0166:input/output/in-out変数の最大数 このチェックは、定義された数の入力変数( VAR_INPUT )、出力変数( VAR_OUTPUT ) また VAR_IN_OUT -ブロック内の変数を超えています。のダイアログで最大数を定義します プロジェクト設定 ルールのある行をダブルクリックしたとき。 理由:個々のプログラミングガイドラインを確認することです。多くのプログラミ
SA0167:一時的な機能ブロックインスタンス このチェックにより、一時変数として宣言されている機能ブロックインスタンスが決定されます。これは、メソッド内、関数内、またはとしてのインスタンスに影響します VAR_TEMP 宣言されているため、各処理サイクルまたは各ブロック呼び出しで再初期化されます。 理由: 機能ブロックには、通常、複数の PLC サイクルにわたって維持される状態があります。スタッ
SA0168:不要な割り当て コードに影響を与えない変数への割り当てを検索します。 理由:割り当て間で変数が評価されることなく、値が変数に複数回割り当てられている場合、最初の割り当てはプログラムに影響を与えません。 重要度:低 例 125 . 例 PROGRAM PLC_PRG VAR dwVal1 : DWORD; dwVal2 : DWORD; END_VAR // unnecessary a
SA0169:無視された出口 メソッドまたは関数が呼び出されたときに指定されていないメソッドおよび関数の出口を決定します。 理論的根拠:結果が使用されないため、無視された出口は、未処理のエラーまたは無意味な関数呼び出しを示している可能性があります。 重要性:中 例 126 . 例 FUNCTION Fun1 VAR_INPUT bIn : BOOL; VAR_END VAR_OUTPUT bOut