SA0090: 関数終了前の RETURN ステートメント コードの場所を検出します。 RETURN ステートメントは、関数、メソッド、プロパティ、またはプログラムの最後のステートメントではありません。設置場所 RETURN 内に存在します IF ブランチも検出されます。 理由:A RETURN コード内にあると、コードの保守性、テスト性、および可読性が低下します。 A RETURN コード内は簡
SA0100:<n>バイトより大きい変数 nバイトを超える変数を検索します。ここで、nは現在の構成で指定されます。デフォルト:1024バイト。行をダブルクリックすると、値を変更できます。 理論的根拠:一部のプログラミングガイドラインでは、単一の変数の最大サイズが設定されています。これはここで確認できます。 重要度:低 例 88 . 例 PROGRAM PLC_PRG VAR aobyTest :
SA0101:長さが不正な名前 無効な長さの名前を検索します。ダイアログでこのルールの行をダブルクリックする プロジェクト設定 名前の長さを定義し、これに対する例外を指定できるダイアログが開きます。 理由:一部のプログラミングガイドラインでは、変数名の最小長が指定されています。この分析でコンプライアンスを確認できます。 重要度:低 PLCopenルール:N6 ヒント すべてのルールは次のとおりです
SA0102: 外部からのプログラム/FB 変数へのアクセス プログラムまたは機能ブロックのローカル変数への外部アクセスを決定します。 理由: CODESYS プログラムまたは機能ブロックのローカル変数への外部読み取りアクセスを有効にします。これは、データのカプセル化(データの非表示)の原則に違反し、IEC61131-3規格に準拠していません。 重要性:中 例 90 . 例 PROGRAM PLC
SA0103:非アトミックデータへの同時アクセス 非アトミック変数(データ型など)かどうかを判断します STRING 、 WSTRING 、 ARRAY 、 STRUCT 、FBインスタンス、64ビットデータ型)は、複数のタスクで使用できます。 理由:アクセス中に同期がない場合、あるタスクでの読み取りと別のタスクでの書き込みにより、読み取られる値に一貫性がなくなる可能性があります。 重要性:中 ヒ
SA0105:複数のインスタンス呼び出し 複数回呼び出されるファンクションブロックのインスタンスを検出します。この目的のために、関数ブロックは次のプラグマでマークされる必要があります。 {attribute 'analysis:report-multiple-instance-calls'} 理由: 一部の機能ブロックは、サイクル内で 1 回だけ呼び出せるように設計されています。このテストでは、複
SA0106:FB_Initでの仮想メソッド呼び出し メソッド内のメソッド呼び出しを検出します FB_Init 基本FBから派生した機能ブロックによって上書きされる基本機能ブロックの。 理由:このような場合、基本FBの上書きされたメソッドの変数が初期化されていない可能性があります。 重要性:高い 例 93 . 例 ファンクションブロック FB_A メソッドがあります FB_Init と Meth_
SA0161:パック構造のアンパック構造 パック構造で使用されるアンパック構造を決定します。 理由: コンパイラは通常、アンパックされた構造体を、構造体内のすべての要素への整列されたアクセスを許可するアドレスに設定します。この構造をパック構造で作成すると、整列アクセスは不可能になります。さらに、アンパックされた構造内の要素にアクセスすると、「不整列例外」が発生する可能性があります。 重要性:高い
SA0162:コメントがありません プログラム内のコメントされていない位置を決定します。 理論的根拠:多くのプログラミングガイドラインでは完全なコメントが必要であり、コードの可読性と保守性が向上します。 重要度:低 PLCopenルール:C2 コメントが必要です 変数の宣言。コメントはその上または右側にあります。 プログラム、関数ブロック、またはメソッドの宣言。コメントは宣言の上にあります(最初の
SA0163:ネストされたコメント ネストされたコメントを検出します。 理論的根拠:ネストされたコメントは読みにくいため、避ける必要があります。 重要度:低 PLCopenルール:C3 例 120 . 例 {attribute 'do-analysis'} (* That is (* nested comment 1 *) *) PROGRAM PLC_PRG VAR (* That is //