SA0003:空のステートメント セミコロンを含むコード行を検索します ; 、ただし、説明は含まれていません。 理論的根拠:空のステートメントは、欠落しているコードを示している可能性があります。 注: 空のステートメントを使用するのには十分な理由があります。たとえば、 CASE このステートメントでは、何もすることがない場合も含め、すべてのケースを明示的にプログラムすることが合理的です。こういう空
SA0004:出力への複数の書き込みアクセス 複数の場所に書き込まれる出力を検索します。 理論的根拠:出口がコード内のさまざまな場所に書き込まれると、保守性が低下します。その場合、どの書き込みアクセスが実際にプロセスに影響を与えるのかは不明です。補助変数で出力変数の計算を行い、サイクルの最後の1つのポイントで計算値を割り当てることをお勧めします。 重要性:高い PLCopenルール:CP12 ヒン
SA0007: 定数のアドレス演算子 演算子が存在するコード行を検索します ADR 定数に適用されます。 理由:定数変数へのポインターは、 CONSTANT 変数のプロパティ。変数は、コンパイラーがこれを報告しなくても、ポインターを介して変更できます。 例外:まれに、定数へのポインタを関数に転送することが理にかなっている場合があります。ただし、この関数が転送された値を変更しないことを確認する必要が
SA0008:サブエリアタイプを確認してください サブレンジタイプのレンジ違反を検出します。割り当てられたリテラルは、コンパイラによってすでにチェックされています。定数が割り当てられている場合、値は定義された範囲内にある必要があります。変数をマップする場合、データ型は同じである必要があります。 理由:サブエリアタイプを使用する場合は、このサブエリアが終了しないようにする必要があります。コンパイラー
SA0009:未使用の戻り値 戻り値が使用されていない関数、メソッド、およびプロパティの呼び出しを検出します。 理由: 関数またはメソッドが戻り値を返すときは、それも評価する必要があります。戻り値は多くの場合、関数が正常に実行されたかどうかを示します。評価がない場合、戻り値が忘れられていたのか、それとも実際には必要ではなかったのかを後で特定することができなくなります。 例外: 戻り値が呼び出しに無
SA0022 :(おそらく)割り当てられていない戻り値 戻り値に割り当てられていない実行スレッドを含むすべての関数とメソッドを検索します。 理論的根拠:関数またはメソッドの未割り当ての戻り値は、コードが欠落していることを示しています。戻り値に常にデフォルト値がある場合でも、あいまいさを避けるために、これを明示的に再度割り当てることは常に理にかなっています。 重要性:中 例 33 . 例 FUNCT
SA0023:複雑な戻り値 プロセッサの単純なレジスタコピーでは返すことができない複雑な戻り値を決定します。これには、構造体、配列、およびタイプの戻り値が含まれます STRING (占有ストレージスペースのサイズに関係なく)。 理由: これはパフォーマンスに関する警告です。関数、メソッド、またはプロパティの結果として大きな値が返された場合、プロセッサはコードの実行時にそれらの値を複数回コピーします
SA0025:修飾されていない列挙定数 列挙の前に修飾名がない場合の列挙定数を決定します。 理由: 限定されたアクセスにより、コードが読みやすくなり、保守が容易になります。修飾された変数名を強制しないと、プログラムの拡張時に追加の列挙が挿入される可能性があります。この列挙には、既存の列挙と同じ名前の定数が含まれています (以下の例を参照: "red")。これにより、このコード部分へのアクセスがあい
SA0026:文字列の切り捨ての可能性 十分な文字列長を使用していない文字列割り当てと文字列初期化子を検出します。 理由:異なる長さの文字列が割り当てられている場合、文字列が切り捨てられる可能性があります。その場合、結果は期待どおりではありません。 重要性:中 例 37 . 例 PROGRAM PLC_PRG VAR strVar1 : STRING[10]; strVar2 : STRING[6
SA0027:識別子の複数の使用 プロジェクトのスコープ内での変数またはオブジェクト(POU)の名前/識別子の複数の使用を検出します。 列挙の場合、修飾名が考慮されます。 理論的根拠:同じ名前は、コードを読むときに混乱する可能性があります。間違ったオブジェクトに誤ってアクセスすると、エラーが発生する可能性があります。したがって、このような状況を回避するために、命名規則を定義して従います。 次のケー