SA0017: ポインター変数への異常な代入 アドレスを持たないポインタへの割り当てを決定します(演算子 ADR またはポインタ変数)または定数 0 それは。 理由: ポインタに有効なアドレスではない値が割り当てられている場合、ポインタの逆参照により「アクセス違反例外」が発生します。 重要性:高い 例 29 . 例 PROGRAM PLC_PRG VAR pInt : POINTER TO INT
SA0021:一時変数のアドレスの転送 非一時変数への一時変数(スタック上の変数)のアドレス割り当てを取得します。 理由:関数またはメソッドのローカル変数がスタック上に作成され、関数またはメソッドが処理されている間のみ存在します。メソッドまたは関数が処理された後にポインタがそのような変数を指している場合、このポインタを使用して未定義のメモリにアクセスしたり、別の関数の誤った変数にアクセスしたりでき
属性:analysis:report-multiple-instance-calls 属性は、チェックの汎用モジュールを識別します 規則105 :この属性を持つ機能ブロックのみが、機能ブロックのインスタンスが複数回呼び出されているかどうかを確認するためにチェックされます。ルール105の場合 プロジェクト設定 が無効になっている場合、属性は効果がありません。 挿入位置 :機能ブロックの宣言部分の最初
SA0006:複数のタスクからの書き込みアクセス 複数のタスクによって書き込まれる変数を決定します。 理由:いくつかのタスクで記述された変数は、その値を予期せず変更する可能性があります。これは混乱を招く状況につながる可能性があります。文字列変数および一部の32ビットシステムでは、変数が2つのタスクで同時に書き込まれる場合、64ビット整数変数も一貫性のないステータスになる可能性があります。 例外:場
SA0007: 定数のアドレス演算子 演算子が存在するコード行を検索します ADR 定数に適用されます。 理由:定数変数へのポインターは、 CONSTANT 変数のプロパティ。変数は、コンパイラーがこれを報告しなくても、ポインターを介して変更できます。 例外:まれに、定数へのポインタを関数に転送することが理にかなっている場合があります。ただし、この関数が転送された値を変更しないことを確認する必要が
SA0009:未使用の戻り値 戻り値が使用されていない関数、メソッド、およびプロパティの呼び出しを検出します。 理由: 関数またはメソッドが戻り値を返すときは、それも評価する必要があります。戻り値は多くの場合、関数が正常に実行されたかどうかを示します。評価がない場合、戻り値が忘れられていたのか、それとも実際には必要ではなかったのかを後で特定することができなくなります。 例外: 戻り値が呼び出しに無
SA0025:修飾されていない列挙定数 列挙の前に修飾名がない場合の列挙定数を決定します。 理由: 限定されたアクセスにより、コードが読みやすくなり、保守が容易になります。修飾された変数名を強制しないと、プログラムの拡張時に追加の列挙が挿入される可能性があります。この列挙には、既存の列挙と同じ名前の定数が含まれています (以下の例を参照: "red")。これにより、このコード部分へのアクセスがあい
SA0026:文字列の切り捨ての可能性 十分な文字列長を使用していない文字列割り当てと文字列初期化子を検出します。 理由:異なる長さの文字列が割り当てられている場合、文字列が切り捨てられる可能性があります。その場合、結果は期待どおりではありません。 重要性:中 例 37 . 例 PROGRAM PLC_PRG VAR strVar1 : STRING[10]; strVar2 : STRING[6
SA0029:実装と宣言の表記が異なります 識別子の表記が宣言の表記と異なるコード位置を決定します。 根拠: IEC 61131-3 標準では、識別子は大文字と小文字を区別しないと定義されています。これは、「」として宣言された変数を意味します。 varx 「」としても使用できます VaRx ただし、これは混乱を招き誤解を招くため、避けてください。 重要性:中 例 40 . 例 デバイスツリーにブロ
SA0032:未使用の列挙定数 コンパイルされたプログラムコードで使用されない列挙定数を決定します。 理由:未使用の列挙定数は、列挙定義を不必要に拡大し、プログラムを読み取るときに混乱する可能性があります。 PLCopenルール:CP24 重要度:低 ヒント プロジェクトに複数のアプリケーションがある場合は、現在アクティブなアプリケーションの下にあるオブジェクトのみが考慮されます。アプリケーション