SA0001:到達不能コード たとえば、次のような理由で実行されないコード行を検出します。 RETURN または CONTINUE 声明 理由:到達不能コードはどのような場合でも避ける必要があります。多くの場合、 テスト 再度削除する必要のあるテストコードがまだ含まれていることを示します。 重要性:高い PLCopenルール:CP2 例 14 . 例 PROGRAM PLC_PRG VAR xRe
SA0034:割り当てが正しくない列挙型変数 列挙型変数に割り当てられた値を取得します。定義された列挙定数のみを列挙変数に割り当てることができます。 理由: 列挙型の変数には、意図した値のみが含まれている必要があります。そうでないと、この変数を使用するコードが正しく動作しない可能性があります。プラグマでは常に列挙型を使用することをお勧めします。 {attribute 'strict'} 。その後、
SA0060:無効なオペランドとしてNull オペランドに値が含まれる操作を検出します。 0 無効または無意味な操作を引き起こす 理由:このような式は、プログラミングエラーを示している可能性があります。いずれにせよ、それは不必要に実行時間を要します。 重要性:中 例 70 . 例 PROGRAM PLC_PRG VAR byTemp1 : BYTE; wTemp2 : WORD; dwTemp3
SA0051:BOOL変数の比較演算 タイプの変数の比較演算を決定します BOOL 。 理由: CODESYS このような種類の比較が可能になります。しかし、それらは非常に珍しいため、混乱を招く可能性があります。 IEC 61131-3 規格では、これらの比較は規定されていません。これらを回避すると、他の開発システムへのコードの移植性が高まります。 重要性:中 例 60 . 例 PROGRAM P
SA0075:ELSEがありません 決定 CASE -なしの指示 ELSE -ブランチ。 理論的根拠:防御的なプログラミングには、 ELSE それぞれに CASE -命令。もし私が ELSE -何もすることがない場合は、コメントでマークする必要があります。そうすれば、コードの読者には、事件が単に忘れられたのではないことが明らかになります。 重要度:低 PLCopenルール:L17 重要 For C
SA0118:定数を使用しない初期化 定数を割り当てない初期化子を検索します。 理由:初期化は可能な限り一定であり、他の変数を参照しないようにする必要があります。特に、初期化中の関数呼び出しは、初期化されていないデータへのアクセスにつながる可能性があるため、避ける必要があります。 重要性:中 例 109 . 例 PROGRAM PLC_PRG VAR dwTemp : DWORD := 22; d
プラグマ:analysis このプラグマを使用すると、プログラミングブロック内の個々のコード行のコーディングルールを非アクティブ化して、プログラミングブロックで使用できるようにします。 静的コード分析 考慮されません。ルール番号とその前のマイナス記号( "-")を指定して、コーディングルールを無効にします。プラス記号( "+")は、アクティブ化のために接頭辞が付けられます。プラグマでは、ルールをい
SA0011: メンバーが 1 つしかない無駄な宣言 メンバーが 1 つだけある構造体または列挙型を検出します 理由: メンバーが 1 つだけの構造体や列挙型は宣言すべきではありません。このような宣言は読者を混乱させる可能性があります。要素が 1 つだけある構造体は、エイリアス型で置き換えることができます。要素が 1 つだけある列挙は定数に置き換えることができます。 PLCopenルール:CP22
SA0012:定数として宣言できる変数 書き込みのためにアクセスされないため、定数として宣言できる変数を判別します。 正当性: 変数が宣言点でのみ書き込まれ、それ以外は読み取りのみに使用される場合、静的分析では変数も変更すべきではないと想定されます。まず、定数として宣言すると、プログラム変更時に変数が変更されないことがチェックされます。次に、定数として宣言すると、コードが高速になる可能性があります
SA0015:FB_Initを介したグローバルデータへのアクセス メソッドを介したグローバル変数への関数ブロックのアクセスを決定します FB_Init 。この変数の値は、初期化の順序によって異なります。 理由:ブロックのインスタンスの宣言ポイントによっては、ルールに違反した場合に初期化されていない変数にアクセスする可能性があります。 重要性:高い 例 27 . 例 VAR_GLOBAL g_xTe