SA0078:CASEブランチのないCASEステートメント 決定 CASE -なしの指示 CASE -ブランチと1つだけ ELSE -命令。 理由: A CASE ケースのないステートメントは実行時間が無駄になり、読みにくくなります。 重要性:中 例 84 . 例 PROGRAM PLC_PRG VAR iVar : INT; xTemp : BOOL; END_VAR iVar := iVar
SA0039:nullポインタの逆参照の可能性 nullポインタが逆参照される可能性のあるコードを決定します。 正当性: ポインターは、各逆参照の前にチェックして、ゼロに等しくないことを確認する必要があります。そうしないと、実行時にアクセス違反が発生する可能性があります。 重要性:高い 例 113 . 例 PROGRAM PLC_PRG VAR ptiVar1:POINTER TO INT; pt
SA0122:式として定義された配列インデックス 配列インデックスを宣言するときの式の使用を検出します。 理由:すべてのシステムが式を配列境界として許可しているわけではありません。 重要度:低 例 105 . 例 PROGRAM PLC_PRG VAR CONSTANT c_iValue : INT := INT#15; END_VAR VAR arr : ARRAY [0..c_iValue +
静的コード分析を構成して実行する 単純なサンプルプロジェクトに基づいて、静的コード分析を構成および実行するための最も重要な手順とオプションを以下に示します。 要件: CODESYS Static Analysis インストールされています。 サンプルプロジェクト サンプルプロジェクトを再プログラムする場合は、標準プロジェクトを作成し、アプリケーションの下にある以下に示すブロックをデバイスツリーに挿
プラグマ:analysis このプラグマを使用すると、プログラミングブロック内の個々のコード行のコーディングルールを非アクティブ化して、プログラミングブロックで使用できるようにします。 静的コード分析 考慮されません。ルール番号とその前のマイナス記号( "-")を指定して、コーディングルールを無効にします。プラス記号( "+")は、アクティブ化のために接頭辞が付けられます。プラグマでは、ルールをい
属性:analysis:report-multiple-instance-calls 属性は、チェックの汎用モジュールを識別します 規則105 :この属性を持つ機能ブロックのみが、機能ブロックのインスタンスが複数回呼び出されているかどうかを確認するためにチェックされます。ルール105の場合 プロジェクト設定 が無効になっている場合、属性は効果がありません。 挿入位置 :機能ブロックの宣言部分の最初
コマンド: 標準メトリックの表示 シンボル: 関数 : このコマンドは、アクティブなアプリケーションの静的コード分析を開始します。すべてのプログラミング ブロックのデフォルトのメトリクスが計算され、画面上の表に表示されます。 標準指標 タブ。 電話 : ビルド → 静的解析 メニュー 詳細については、以下を参照してください。 指標を表示する メトリクス タブ: 標準メトリクス 例 11 . 例 ヒ
SA0121: VAR_EXTERNAL 宣言がありません 関数ブロックで宣言されていないグローバル変数の使用を検出します。 VAR_EXTERNAL 理由:IEC 61131-3規格によると、グローバル変数へのアクセスは、 VAR_EXTERNAL -宣言は許可されています。 重要度:低 PLCopenルール:CP18 例 103 . 例 VAR_GLOBAL iGlob1 : INT; END
コマンド:関数の抽出 関数 :コマンドはダイアログを開きます 関数抽出の構成 。 このコマンドは、STエディターから選択したコードの場所を抽出し、このコードを含む新しいメソッドまたは関数を作成します。 STエディターで影響を受けるコードは、正しい呼び出しに置き換えられます。関数ブロックまたは関数ブロックの子からコードが抽出されると、コードから新しいメソッドが作成されます。プログラムまたは関数からコ
SA0010:コンポーネントが1つしかないアレイ コンポーネントが1つしかない配列を検索します。 理由:1つのコンポーネントを持つ配列は、基本型の変数に置き換えることができます。この変数へのアクセスは、インデックスを使用して変数にアクセスするよりも大幅に高速です。 例外: 配列の長さは定数によって決定されることが多く、これはプログラムのパラメーターです。そうすれば、プログラムはさまざまな長さの配列