Formatting Commands (Overview) ¶ A reStructuredText document consists of body (or block-level elements) and it can be structured in sections. Sections are indicated by the title style (underlines and
SA0010:コンポーネントが1つしかないアレイ コンポーネントが1つしかない配列を検索します。 理由:1つのコンポーネントを持つ配列は、基本型の変数に置き換えることができます。この変数へのアクセスは、インデックスを使用して変数にアクセスするよりも大幅に高速です。 例外: 配列の長さは定数によって決定されることが多く、これはプログラムのパラメーターです。そうすれば、プログラムはさまざまな長さの配列
SA0020:REAL変数への切り捨てられた値の割り当ての可能性 データ型変数の切り捨てられた値を含む可能性のある整数変数の演算を検出します REAL 割り当てられています。 理由:整数計算の結果が次の場合、静的コード分析でエラーが発生します REAL - また LREAL -変数が割り当てられます。プログラマーは、そのような割り当ての解釈が正しくない可能性があることに注意する必要があります。 l
SA0008:サブエリアタイプを確認してください サブレンジタイプのレンジ違反を検出します。割り当てられたリテラルは、コンパイラによってすでにチェックされています。定数が割り当てられている場合、値は定義された範囲内にある必要があります。変数をマップする場合、データ型は同じである必要があります。 理由:サブエリアタイプを使用する場合は、このサブエリアが終了しないようにする必要があります。コンパイラー
SA0041:ループ不変コードの可能性 各ループ サイクルで同じ値を計算するループ内の代入を検出します。このようなコード行はループの外側に挿入される可能性があります。 理由: これはパフォーマンスに関する警告です。ループ内で実行されるが、各ループ サイクルで同じことを行うコードは、ループの外で実行できます。 重要性:中 例 49 . 例 PROGRAM PLC_PRG VAR iCounter,
SA0106:FB_Initでの仮想メソッド呼び出し メソッド内のメソッド呼び出しを検出します FB_Init 基本FBから派生した機能ブロックによって上書きされる基本機能ブロックの。 理由:このような場合、基本FBの上書きされたメソッドの変数が初期化されていない可能性があります。 重要性:高い 例 93 . 例 ファンクションブロック FB_A メソッドがあります FB_Init と Meth_
SA0168:不要な割り当て コードに影響を与えない変数への割り当てを検索します。 理由:割り当て間で変数が評価されることなく、値が変数に複数回割り当てられている場合、最初の割り当てはプログラムに影響を与えません。 重要度:低 例 125 . 例 PROGRAM PLC_PRG VAR dwVal1 : DWORD; dwVal2 : DWORD; END_VAR // unnecessary a
SA0053:ビット単位のシフトが大きすぎます オペランドのビット単位シフト(ビットシフト)を行う場合、オペランドのデータ型幅を超えていないか判断します。 理由:移動操作がデータ型の幅を超えると、定数が作成されます 0 。 回転シフトがデータ型の幅を超えている場合、読み取りが困難であるため、回転値を切り捨てる必要があります。 重要性:高い 例 62 . 例 PROGRAM PLC_PRG VAR
SA0062:式でのTRUEまたはFALSEの使用 リテラルの使用法を決定します TRUE また FALSE 式で。 正当性: ブール値リテラルを使用した演算 TRUE または FALSE 、繰り返し計算され、毎回同じ結果が返されることは避けるべきです。この種の表現は余分なので置き換えるべきです。その存在はエラーを示します。いずれの場合も、式はプログラムの実行時間に不必要に負担をかけます。 重要性
SA0047:直接アドレスへのアクセス 実装コードでの直接アドレスアクセスを決定します。 理由:シンボリックプログラミングが常に望ましい:変数には意味を持つこともできる名前があります。アドレスが何に使用されているかはわかりません。 重要性:高い PLCopenルール:N1 / CP1 例 58 . 例 PROGRAM PLC_PRG VAR xVar : BOOL; byVar : BYTE; E