ダイアログ:静的解析設定:命名規則 関数 :対話で 定義 データ型と変数スコープのプレフィックス、およびPOUとユーザー定義データ型(DUT)のプレフィックス。 the 遵守 命名規則の一部は、静的コード分析によってチェックされます。規則に違反すると、静的コード分析のビューにエラーメッセージが表示されます メッセージ 表示されます。これに関する詳細情報: 静的コード分析を構成して実行する 電話 :
SA0021:一時変数のアドレスの転送 非一時変数への一時変数(スタック上の変数)のアドレス割り当てを取得します。 理由:関数またはメソッドのローカル変数がスタック上に作成され、関数またはメソッドが処理されている間のみ存在します。メソッドまたは関数が処理された後にポインタがそのような変数を指している場合、このポインタを使用して未定義のメモリにアクセスしたり、別の関数の誤った変数にアクセスしたりでき
コマンド: 現在のエディタの定数伝播の値を表示 シンボル: 関数 : このコマンドは静的コード分析を開始し、現在のエディターでのコードの定数伝播の測定値を計算します。ダイアログが開き、結果が視覚化されます。解析されたコードが一覧表示され、求められた測定値が表示されます。 電話 : ビルド → 静的解析 メニュー 要件 : ST 実装言語のプログラミング オブジェクトがエディターで開かれています。
コマンド: 現在のエディターの認知的複雑性を表示 シンボル: 関数 : このコマンドは静的コード分析を開始し、現在のエディターでのコードの認知的複雑さの測定値を計算します。開いたダイアログでは結果が視覚化され、タイトルに測定値の合計が指定されます。分析されたコードがリストされ、検出された複雑さとともに表示されます。 電話 : ビルド → 静的解析 メニュー 要件 : ST 実装言語のプログラミング
属性: nameprefix この属性は、構造化データ型の変数のプレフィックスを定義します。プレフィックスは、このタイプで宣言された変数の識別子の前に置く必要があります。この命名規則は、 静的コード分析 。 挿入位置 :構造化データ型の宣言前の行 構文 : {attribute 'nameprefix' := '<prefix>'} 例 次の例では、変数名が「point」で始まっていないため、静的
SA0026:文字列の切り捨ての可能性 十分な文字列長を使用していない文字列割り当てと文字列初期化子を検出します。 理由:異なる長さの文字列が割り当てられている場合、文字列が切り捨てられる可能性があります。その場合、結果は期待どおりではありません。 重要性:中 例 37 . 例 PROGRAM PLC_PRG VAR strVar1 : STRING[10]; strVar2 : STRING[6
SA0038:出力変数への読み取りアクセス 出力変数を検出します ( VAR_OUTPUT ) POU 内の読み取り権限でアクセスされます。 理由:61131-3によると、ブロック内の出力を読み取ることは禁止されています。これは、出力が出力としてだけでなく、中間結果の一時変数としても使用されることを示します。このような二重使用は避けてください。 重要度:低 例 47 . 例 VAR_GLOBAL
SA0166:input/output/in-out変数の最大数 このチェックは、定義された数の入力変数( VAR_INPUT )、出力変数( VAR_OUTPUT ) また VAR_IN_OUT -ブロック内の変数を超えています。のダイアログで最大数を定義します プロジェクト設定 ルールのある行をダブルクリックしたとき。 理由:個々のプログラミングガイドラインを確認することです。多くのプログラミ
SA0169:無視された出口 メソッドまたは関数が呼び出されたときに指定されていないメソッドおよび関数の出口を決定します。 理論的根拠:結果が使用されないため、無視された出口は、未処理のエラーまたは無意味な関数呼び出しを示している可能性があります。 重要性:中 例 126 . 例 FUNCTION Fun1 VAR_INPUT bIn : BOOL; VAR_END VAR_OUTPUT bOut
SA0057:小数点以下の桁数が失われる可能性 小数点以下の桁数が失われる可能性のある命令を決定します。 理由:次の種類のコードの一部: diTemp2 := 1 rTemp1 := TO_REAL(diTemp2 / DINT#2) 誤解を招く可能性があります。このコード行の作成者または読者は、分割が次のようになると想定する場合があります。 REAL -実行された操作と結果はこの場合になります