メトリクス 提供されるメトリクスの詳細な説明 CODESYS Static Analysis ヒント の コードサイズ 、 可変サイズ 、 スタックサイズ 、 そして コール数 メトリクスは、プロジェクトに統合されているライブラリからの POU についてのみレポートされます。 メトリクス: コードサイズ (バイト数) カテゴリ: 有益、効率 ファンクション ブロックがアプリケーション コードに寄与
命名規則を定義する 対話中 設定静的分析 タブの下 命名規則 コードで従う命名規則を定義します。スコープと修飾子に応じて、プログラミングブロック、変数、およびデータ型の識別子のプレフィックスを定義します。 次に、静的分析で命名規則への準拠を確認できます。 これへのガイド: 定義された命名規則への準拠を確認してください プレフィックスを定義する 対話中 設定静的分析 タブの下 命名規則 列の入力フィ
SA0046:初期化されていないインターフェイスが使用されている可能性があります 使用前に初期化されていないインターフェースの使用を検出します。 理由: インターフェイス参照は、使用する前に <> 0 であるかどうかをチェックする必要があります。そうしないと、アクセス中にアクセス違反が発生する可能性があります。 重要性:高い 例 114 . 例 //Declaration of INTERFACE
属性'naming' 属性は、によって使用されるコード行を識別します 命名規則の分析 除外されます。コード分析が中断されるコードの最初の行の前に、プラグマ属性がオンになっています off 、最後の行の後 on 割り当てられました。いつ omit 割り当てられると、コードの次の行のみが無視されます。 挿入位置 :非アクティブ化:関連する行の上のPOUおよびDUTの宣言部分。アクティベーション:関連す
定数伝播 とともに CODESYS Static Analysis バージョン V5.0.0.0 では、コードの分析は定数伝播に基づいています。定数伝播の結果はさまざまなチェックに使用されます。たとえば、ポインタが 0 に等しくないか、配列インデックスが有効範囲外かどうかをチェックします。 この分析がどのように機能するのか、またその制限は何なのかを知るだけで、静的分析を効果的にサポートできます。
SA0058:列挙変数の操作 データ型列挙型の変数に対する操作を決定します。割り当てが許可されます。 理由: 列挙型は通常の整数値として使用すべきではありません。あるいは、エイリアス データ型を定義したり、サブレンジ型を使用したりすることもできます。 重要性:中 例外:属性を持つ列挙型の場合 {attribute 'strict'} がマークされている場合、コンパイラはすでにそのような操作を報告し
SA0130: 暗黙的な拡張変換 算術演算中に小さいデータ型から大きいデータ型への変換が暗黙的に実行されるコードの位置を検出します。 理由: ソース型の値の範囲がターゲット型の値の範囲内に完全に含まれている場合、コンパイラは異なる型の代入を許可します。ただし、コンパイラは、できる限り遅いタイミングでコードへの変換を構築します。タイプの割り当ての場合 lint := dint * dint の場合、
SA0134:明示的な符号付き/符号なし変換 明示的に実行された、符号付きデータ型から符号なしデータ型への変換、およびその逆の変換を検出します。 正当性: 型変換を過度に使用すると、変数に対して間違ったデータ型が選択された可能性があります。このため、データ型変換の明示的な理由を要求するプログラミング ガイドラインがあります。 重要度:低 例 56 . 例 PROGRAM PLC_PRG VAR b
SA0147:異常な移動操作-strict ビットフィールドデータ型に適用されないビットシフト操作を決定します( BYTE 、 WORD 、 DWORD 、 LWORD ) それぞれ。 理由:IEC 61131-3規格では、ビットフィールドデータ型へのビットアクセスのみが許可されています。 the CODESYS ただし、コンパイラは、符号なしデータ型を使用したビットシフト演算も許可します。 重要
静的コード分析を構成して実行する 単純なサンプルプロジェクトに基づいて、静的コード分析を構成および実行するための最も重要な手順とオプションを以下に示します。 要件: CODESYS Static Analysis インストールされています。 サンプルプロジェクト サンプルプロジェクトを再プログラムする場合は、標準プロジェクトを作成し、アプリケーションの下にある以下に示すブロックをデバイスツリーに挿