メトリクス 提供されるメトリクスの詳細な説明 CODESYS Static Analysis ヒント の コードサイズ 、 可変サイズ 、 スタックサイズ 、 そして コール数 メトリクスは、プロジェクトに統合されているライブラリからの POU についてのみレポートされます。 メトリクス: コードサイズ (バイト数) カテゴリ: 有益、効率 ファンクション ブロックがアプリケーション コードに寄与
命名規則を定義する 対話中 設定静的分析 タブの下 命名規則 コードで従う命名規則を定義します。スコープと修飾子に応じて、プログラミングブロック、変数、およびデータ型の識別子のプレフィックスを定義します。 次に、静的分析で命名規則への準拠を確認できます。 これへのガイド: 定義された命名規則への準拠を確認してください プレフィックスを定義する 対話中 設定静的分析 タブの下 命名規則 列の入力フィ
定数伝播 とともに CODESYS Static Analysis バージョン V5.0.0.0 では、コードの分析は定数伝播に基づいています。定数伝播の結果はさまざまなチェックに使用されます。たとえば、ポインタが 0 に等しくないか、配列インデックスが有効範囲外かどうかをチェックします。 この分析がどのように機能するのか、またその制限は何なのかを知るだけで、静的分析を効果的にサポートできます。
SA0095:条件の割り当て の条件で割り当てを決定します IF -、 CASE - また REPEAT -構築します。 理由:割り当て(:=)と比較(=)は簡単に混同される可能性があります。したがって、条件内の割り当ては、意図せずに簡単に行われる可能性があるため、報告されます。これは、コードの読者を混乱させる可能性もあります。 重要性:高い 例 87 . 例 PROGRAM PLC_PRG VA
SA0065:ポインタの追加がベースサイズと一致しません 追加される値がポインターの基本サイズと一致しないポインターの追加を検出します。基本データ サイズとその倍数のリテラルのみをエラーなく追加できます。 位置揃え: で CODESYS (C および C++ とは対照的に) 整数値を持つポインターを追加する場合、整数値に基本サイズを乗算したものではなく、この整数値のみがバイト数として追加されます。
SA0054:REAL / LREALを比較して等式/不等式 比較演算子かどうかを決定します = (平等)と <> (不等式)タイプのオペランド REAL また LREAL 比べる。 理由: REAL / LREAL 値は、IEEE 754 標準に従って浮動小数点数として実装されます。この標準は、特定の一見単純な 10 進数を正確に表現できないことを意味します。その結果、以下のように異なる表現が存
SA0058:列挙変数の操作 データ型列挙型の変数に対する操作を決定します。割り当てが許可されます。 理由: 列挙型は通常の整数値として使用すべきではありません。あるいは、エイリアス データ型を定義したり、サブレンジ型を使用したりすることもできます。 重要性:中 例外:属性を持つ列挙型の場合 {attribute 'strict'} がマークされている場合、コンパイラはすでにそのような操作を報告し
SA0046:初期化されていないインターフェイスが使用されている可能性があります 使用前に初期化されていないインターフェースの使用を検出します。 理由: インターフェイス参照は、使用する前に <> 0 であるかどうかをチェックする必要があります。そうしないと、アクセス中にアクセス違反が発生する可能性があります。 重要性:高い 例 114 . 例 //Declaration of INTERFACE
SA0043: 1 つの POU のみでのグローバル変数の使用 単一のビルディングブロックでのグローバル変数の使用を検出します。 理由: 1 つの場所でのみ使用されるグローバル変数も、その場所でのみ宣言する必要があります。 重要性:中 PLCopenルール:CP26 例 51 . 例 VAR_GLOBAL g_xVar AT %QX0.0 : BOOL ; g_iTest AT %QW1 : IN
SA0064:ポインタの追加 ポインタの追加を決定します。 位置揃え: で CODESYS 、ポインター演算は一般に許可されており、適切に使用することもできます。ただし、これはエラーの原因でもあります。したがって、一般にポインター演算を禁止するプログラミング規則が存在します。このテストでは、そのような要件を確認できます。 重要性:中 例 74 . 例 PROGRAM PLC_PRG VAR iTe