SA0107:正式なパラメータがありません 正式なパラメーターが欠落しているかどうかを判別します。 理由: 呼び出しで仮パラメータを指定すると、コードが読みやすくなります。 重要度:低 例 94 . 例 FUNCTION FUNA : BOOL VAR_INPUT bDo : BOOL; bInit : BOOL; bManual : BOOL; END_VAR VAR iInit : INT;
SA0061:ポインタの異常な操作 タイプの変数に対する操作を決定します POINTER TO それはしません = (平等)、 <> (不平等)、 + (追加)または ADR それは。 の CODESYS ポインタ演算は一般的に許可されており、賢明に使用することもできます。したがって、整数値を持つポインターの追加は、ポインターに対する通常の操作として分類されます。これにより、ポインタを使用して可変
SA0147:異常な移動操作-strict ビットフィールドデータ型に適用されないビットシフト操作を決定します( BYTE 、 WORD 、 DWORD 、 LWORD ) それぞれ。 理由:IEC 61131-3規格では、ビットフィールドデータ型へのビットアクセスのみが許可されています。 the CODESYS ただし、コンパイラは、符号なしデータ型を使用したビットシフト演算も許可します。 重要
SA0018:異常なビットアクセス 符号付き変数へのビットアクセスを検出します。ただし、IEC 61131-3 規格では、ビット フィールドに対するビット アクセスとビット シフト操作のみが許可されています。 厳格なルールも参照してください SA0147 そして SA0148 。 理由:符号付きデータ型をビットフィールドとして使用しないでください。その逆も同様です。 IEC 61131-3規格では
属性: nameprefix この属性は、構造化データ型の変数のプレフィックスを定義します。プレフィックスは、このタイプで宣言された変数の識別子の前に置く必要があります。この命名規則は、 静的コード分析 。 挿入位置 :構造化データ型の宣言前の行 構文 : {attribute 'nameprefix' := '<prefix>'} 例 次の例では、変数名が「point」で始まっていないため、静的
SA0004:出力への複数の書き込みアクセス 複数の場所に書き込まれる出力を検索します。 理論的根拠:出口がコード内のさまざまな場所に書き込まれると、保守性が低下します。その場合、どの書き込みアクセスが実際にプロセスに影響を与えるのかは不明です。補助変数で出力変数の計算を行い、サイクルの最後の1つのポイントで計算値を割り当てることをお勧めします。 重要性:高い PLCopenルール:CP12 ヒン
SA0130: 暗黙的な拡張変換 算術演算中に小さいデータ型から大きいデータ型への変換が暗黙的に実行されるコードの位置を検出します。 理由: ソース型の値の範囲がターゲット型の値の範囲内に完全に含まれている場合、コンパイラは異なる型の代入を許可します。ただし、コンパイラは、できる限り遅いタイミングでコードへの変換を構築します。タイプの割り当ての場合 lint := dint * dint の場合、
SA0052:異常なシフト操作 符号付き変数のシフト演算(ビットシフト)を決定します。ビットフィールドデータ型のシフト操作の場合( Byte 、 DWORD 、 LWORD 、 WORD )エラーは出力されません。 理由: CODESYS 署名されたデータ型のシフト操作を許可します。ただし、これらの操作は一般的ではなく、混乱を招く可能性があります。 IEC-61131-3規格はそのような操作を規定
SA0066:中間結果の使用 レジスタ サイズより小さいデータ型を持つステートメントでの一時結果の使用を検出します。この場合、暗黙的なキャストによって望ましくない結果が生じる可能性があります。 正当な理由: パフォーマンス上の理由から、 CODESYS Static Analysis プロセッサのレジスタ幅に対して演算を実行します。中間結果は切り捨てられません。これは、次のような誤解を招く可能性が
SA0148:異常なビットアクセス-strict ビットフィールドのデータ型に基づかないビットアクセスを決定します( BYTE 、 WORD 、 DWORD 、 LWORD ) それぞれ。 IEC 61131-3規格では、ビットフィールドデータ型へのビットアクセスのみが許可されています。 the CODESYS ただし、コンパイラは符号なしデータ型へのビットアクセスも許可します。 重要度: 低 例