コマンド: IF ステートメントを反転する 関数 : このコマンドは、 IF のセマンティクスを変更せずにステートメントを作成します。 IF 声明。条件は否定されます。の声明は、 THEN そして ELSE 枝が入れ替わる。すべてのコメントは保持されます。 電話 : 下のコンテキストメニュー リファクタリング 指示 要件: カーソルが任意の場所に配置されている 内で の IF 声明。 表 2 .
SA0037:入力変数への書き込みアクセス 入力変数を検出します ( VAR_INPUT ) POU 内で書き込み権限でアクセスされます。 理由:IEC 61131-3規格によると、入力変数はブロック内で変更してはなりません。このようなアクセスもエラーの原因であり、コードの保守が困難になります。次に、変数が入力として使用され、同時に補助変数として使用されることを示します。このような二重使用は避けて
SA0102: 外部からのプログラム/FB 変数へのアクセス プログラムまたは機能ブロックのローカル変数への外部アクセスを決定します。 理由: CODESYS プログラムまたは機能ブロックのローカル変数への外部読み取りアクセスを有効にします。これは、データのカプセル化(データの非表示)の原則に違反し、IEC61131-3規格に準拠していません。 重要性:中 例 90 . 例 PROGRAM PLC
SA0170: 出力変数のアドレスは使用できません 出力変数のアドレスが含まれるコードの位置を検出します ( VAR_OUTPUT 、 VAR_IN_OUT ファンクションブロックの)を使用します。 理由: ファンクション ブロック出力のアドレスを次の方法で使用することは許可されていません。 経由 ADR -オペレーター によって REF= 例外: 出力変数が同じ関数ブロック内で使用されている場合
SA0133:明示的なナローイング変換 大きいデータ型から小さいデータ型への明示的に実行された変換を決定します。 根拠: 多数の型変換が行われる場合は、変数に間違ったデータ型を選択したことを示している可能性があります。このため、データ型変換の明示的な理由を要求するプログラミング ガイドラインがあります。 重要度:低 例 55 . 例 PROGRAM SA0133 VAR siVar:SINT; d
SA0134:明示的な符号付き/符号なし変換 明示的に実行された、符号付きデータ型から符号なしデータ型への変換、およびその逆の変換を検出します。 正当性: 型変換を過度に使用すると、変数に対して間違ったデータ型が選択された可能性があります。このため、データ型変換の明示的な理由を要求するプログラミング ガイドラインがあります。 重要度:低 例 56 . 例 PROGRAM PLC_PRG VAR b
SA0039:nullポインタの逆参照の可能性 nullポインタが逆参照される可能性のあるコードを決定します。 正当性: ポインターは、各逆参照の前にチェックして、ゼロに等しくないことを確認する必要があります。そうしないと、実行時にアクセス違反が発生する可能性があります。 重要性:高い 例 113 . 例 PROGRAM PLC_PRG VAR ptiVar1:POINTER TO INT; pt
SA0010:コンポーネントが1つしかないアレイ コンポーネントが1つしかない配列を検索します。 理由:1つのコンポーネントを持つ配列は、基本型の変数に置き換えることができます。この変数へのアクセスは、インデックスを使用して変数にアクセスするよりも大幅に高速です。 例外: 配列の長さは定数によって決定されることが多く、これはプログラムのパラメーターです。そうすれば、プログラムはさまざまな長さの配列
SA0020:REAL変数への切り捨てられた値の割り当ての可能性 データ型変数の切り捨てられた値を含む可能性のある整数変数の演算を検出します REAL 割り当てられています。 理由:整数計算の結果が次の場合、静的コード分析でエラーが発生します REAL - また LREAL -変数が割り当てられます。プログラマーは、そのような割り当ての解釈が正しくない可能性があることに注意する必要があります。 l
SA0008:サブエリアタイプを確認してください サブレンジタイプのレンジ違反を検出します。割り当てられたリテラルは、コンパイラによってすでにチェックされています。定数が割り当てられている場合、値は定義された範囲内にある必要があります。変数をマップする場合、データ型は同じである必要があります。 理由:サブエリアタイプを使用する場合は、このサブエリアが終了しないようにする必要があります。コンパイラー