メトリクス 提供されるメトリクスの詳細な説明 CODESYS Static Analysis ヒント の コードサイズ 、 可変サイズ 、 スタックサイズ 、 そして コール数 メトリクスは、プロジェクトに統合されているライブラリからの POU についてのみレポートされます。 メトリクス: コードサイズ (バイト数) カテゴリ: 有益、効率 ファンクション ブロックがアプリケーション コードに寄与
定数伝播 とともに CODESYS Static Analysis バージョン V5.0.0.0 では、コードの分析は定数伝播に基づいています。定数伝播の結果はさまざまなチェックに使用されます。たとえば、ポインタが 0 に等しくないか、配列インデックスが有効範囲外かどうかをチェックします。 この分析がどのように機能するのか、またその制限は何なのかを知るだけで、静的分析を効果的にサポートできます。
命名規則を定義する 対話中 設定静的分析 タブの下 命名規則 コードで従う命名規則を定義します。スコープと修飾子に応じて、プログラミングブロック、変数、およびデータ型の識別子のプレフィックスを定義します。 次に、静的分析で命名規則への準拠を確認できます。 これへのガイド: 定義された命名規則への準拠を確認してください プレフィックスを定義する 対話中 設定静的分析 タブの下 命名規則 列の入力フィ
SA0013:同じ変数名の宣言 他の変数によって既に使用されている名前を持つ変数を検出します (たとえば、同じ名前を持つグローバル変数とローカル変数)。同じアクセス範囲内で関数名、アクション名、メソッド名、またはプロパティ名が使用されている変数も検出されます。の GVL で宣言された変数も検出されます。 デバイス ビューまたは POU プール内で。ただし、この場合、 POU ビューはアプリケーショ
コマンド: IF ステートメントを反転する 関数 : このコマンドは、 IF のセマンティクスを変更せずにステートメントを作成します。 IF 声明。条件は否定されます。の声明は、 THEN そして ELSE 枝が入れ替わる。すべてのコメントは保持されます。 電話 : 下のコンテキストメニュー リファクタリング 指示 要件: カーソルが任意の場所に配置されている 内で の IF 声明。 表 2 .
コマンド: 標準メトリックの表示 シンボル: 関数 : このコマンドは、アクティブなアプリケーションの静的コード分析を開始します。すべてのプログラミング ブロックのデフォルトのメトリクスが計算され、画面上の表に表示されます。 標準指標 タブ。 電話 : ビルド → 静的解析 メニュー 詳細については、以下を参照してください。 指標を表示する メトリクス タブ: 標準メトリクス 例 11 . 例 ヒ
SA0058:列挙変数の操作 データ型列挙型の変数に対する操作を決定します。割り当てが許可されます。 理由: 列挙型は通常の整数値として使用すべきではありません。あるいは、エイリアス データ型を定義したり、サブレンジ型を使用したりすることもできます。 重要性:中 例外:属性を持つ列挙型の場合 {attribute 'strict'} がマークされている場合、コンパイラはすでにそのような操作を報告し
SA0065:ポインタの追加がベースサイズと一致しません 追加される値がポインターの基本サイズと一致しないポインターの追加を検出します。基本データ サイズとその倍数のリテラルのみをエラーなく追加できます。 位置揃え: で CODESYS (C および C++ とは対照的に) 整数値を持つポインターを追加する場合、整数値に基本サイズを乗算したものではなく、この整数値のみがバイト数として追加されます。
SA0066:中間結果の使用 レジスタ サイズより小さいデータ型を持つステートメントでの一時結果の使用を検出します。この場合、暗黙的なキャストによって望ましくない結果が生じる可能性があります。 正当な理由: パフォーマンス上の理由から、 CODESYS Static Analysis プロセッサのレジスタ幅に対して演算を実行します。中間結果は切り捨てられません。これは、次のような誤解を招く可能性が
SA0121: VAR_EXTERNAL 宣言がありません 関数ブロックで宣言されていないグローバル変数の使用を検出します。 VAR_EXTERNAL 理由:IEC 61131-3規格によると、グローバル変数へのアクセスは、 VAR_EXTERNAL -宣言は許可されています。 重要度:低 PLCopenルール:CP18 例 103 . 例 VAR_GLOBAL iGlob1 : INT; END