SA0024: 型なしリテラル/定数 操作の一部である型なしリテラルを識別します 理由: 型指定されていないリテラルは、その使用法に従って自動的に型指定されます。場合によっては、次のような dw := ROL(DWORD#1, i); 、これにより、独自の説明を提供するために型付きリテラルを使用した方がよいという予期せぬ状況が発生する可能性があります。 重要度:低 例 35 . 例 PROGRAM
SA0025:修飾されていない列挙定数 列挙の前に修飾名がない場合の列挙定数を決定します。 理由: 限定されたアクセスにより、コードが読みやすくなり、保守が容易になります。修飾された変数名を強制しないと、プログラムの拡張時に追加の列挙が挿入される可能性があります。この列挙には、既存の列挙と同じ名前の定数が含まれています (以下の例を参照: "red")。これにより、このコード部分へのアクセスがあい
SA0026:文字列の切り捨ての可能性 十分な文字列長を使用していない文字列割り当てと文字列初期化子を検出します。 理由:異なる長さの文字列が割り当てられている場合、文字列が切り捨てられる可能性があります。その場合、結果は期待どおりではありません。 重要性:中 例 37 . 例 PROGRAM PLC_PRG VAR strVar1 : STRING[10]; strVar2 : STRING[6
SA0027:識別子の複数の使用 プロジェクトのスコープ内での変数またはオブジェクト(POU)の名前/識別子の複数の使用を検出します。 列挙の場合、修飾名が考慮されます。 理論的根拠:同じ名前は、コードを読むときに混乱する可能性があります。間違ったオブジェクトに誤ってアクセスすると、エラーが発生する可能性があります。したがって、このような状況を回避するために、命名規則を定義して従います。 次のケー
SA0028:重複するメモリ領域 2つ以上の変数が同じメモリ空間を占めるコードを決定します。 理由: 2 つの変数が同じメモリを予約すると、コードが予期しない結果で動作する可能性があります。このような状況は何としても避けるべきです。値をさまざまな解釈で使用することを避けられない場合 (たとえば、ある値を次のように解釈する) DINT そしてまた別の時として REAL ) の場合は、を定義する必要が
SA0029:実装と宣言の表記が異なります 識別子の表記が宣言の表記と異なるコード位置を決定します。 根拠: IEC 61131-3 標準では、識別子は大文字と小文字を区別しないと定義されています。これは、「」として宣言された変数を意味します。 varx 「」としても使用できます VaRx ただし、これは混乱を招き誤解を招くため、避けてください。 重要性:中 例 40 . 例 デバイスツリーにブロ
未使用のオブジェクトを一覧表示する このセクションの内容 :
SA0031:未使用の署名 コンパイルされたプログラムコード内で呼び出されないプログラム、関数ブロック、関数、データ型、インターフェイス、メソッド、プロパティ、およびアクションを識別します。 理論的根拠:未使用のオブジェクトはプロジェクトに不要なバルクを追加し、コードを読み取るときに混乱する可能性があります。 重要度:低 PLCopenルール:CP2 ヒント プロジェクトに複数のアプリケーションが
SA0032:未使用の列挙定数 コンパイルされたプログラムコードで使用されない列挙定数を決定します。 理由:未使用の列挙定数は、列挙定義を不必要に拡大し、プログラムを読み取るときに混乱する可能性があります。 PLCopenルール:CP24 重要度:低 ヒント プロジェクトに複数のアプリケーションがある場合は、現在アクティブなアプリケーションの下にあるオブジェクトのみが考慮されます。アプリケーション
SA0033:未使用の変数 宣言されているが、コンパイルされたプログラムコード内で使用されていない変数を決定します。 理論的根拠:未使用の変数は、プログラムを読みにくくし、保守しにくくします。使用されない変数は、メモリを不必要に占有し、初期化中に実行時間のコストを不必要に消費します。 重要性:中 PLCopenルール:CP22 / CP24 ヒント GVL変数の場合:プロジェクトに複数のアプリケー