SA0066:中間結果の使用 レジスタ サイズより小さいデータ型を持つステートメントでの一時結果の使用を検出します。この場合、暗黙的なキャストによって望ましくない結果が生じる可能性があります。 正当な理由: パフォーマンス上の理由から、 CODESYS Static Analysis プロセッサのレジスタ幅に対して演算を実行します。中間結果は切り捨てられません。これは、次のような誤解を招く可能性が
SA0140:ステートメントがコメントアウトされました コメントアウトされたステートメントを検索します 理論的根拠:コードは、デバッグ目的でコメントアウトされることがよくあります。そのようなコメントがリリースされたとき、コードを削除する必要があるのか、それともデバッグ目的でコメントアウトされて誤ってコメントされていないのかは後で不明になります。 重要性:高い PLCopenルール:C4 例 112
おそらく初期化されていない変数が使用されています このセクションの内容 :
SA0039:nullポインタの逆参照の可能性 nullポインタが逆参照される可能性のあるコードを決定します。 正当性: ポインターは、各逆参照の前にチェックして、ゼロに等しくないことを確認する必要があります。そうしないと、実行時にアクセス違反が発生する可能性があります。 重要性:高い 例 113 . 例 PROGRAM PLC_PRG VAR ptiVar1:POINTER TO INT; pt
SA0150:メトリックの下限または上限の違反 下限または上限で有効なメトリックに違反しているビルディングブロックを識別します。 理論的根拠:特定のメトリックに準拠するコードは、読みやすく、保守しやすく、テストしやすいです。 重要性:高い PLCopenルール:CP9 例 116 . 例 初期状況:メトリック ビューの数 対話中です プロジェクト設定→静的コード分析→メトリクス 起動しました。下限
厳格なIECルールを確認してください このセクションの内容 :
SA0119:オブジェクト指向機能 関数ブロック宣言などのオブジェクト指向機能の使用を決定します EXTENDS と IMPLEMENTS 、またはプロパティとインターフェイスの宣言。このルールは、他の61131-3システムに移植するコードを作成するときに役立ちます。 理由:すべてのシステムがオブジェクト指向プログラミングをサポートしているわけではありません。オブジェクト指向を使用しない場合、コー
SA0120:プログラム呼び出し プログラム呼び出しを決定します。 理由:IEC 61131-3規格によると、プログラムはタスク構成でのみ呼び出すことができます。プログラムを他の場所で呼び出さないと、コードの移植性が高まります。 重要度:低 例 102 . 例 PROGRAM prog_control VAR END_VAR ; PROGRAM PLC_PRG VAR END_VAR prog_c
SA0172: 配列の境界外へのアクセス試行の可能性 配列の境界外の配列インデックスへのアクセスの可能性を検出します。 多くの場合、配列インデックスの範囲を超えます。 FOR インデックス変数を使用して配列インデックスにアクセスするループ。 重要度: 高 例 129 . 例 PROGRAM Test VAR_TEMP iIndex: INT; arUSINT: Array[0..10] OF IN