プラグマ:analysis このプラグマを使用すると、プログラミングブロック内の個々のコード行のコーディングルールを非アクティブ化して、プログラミングブロックで使用できるようにします。 静的コード分析 考慮されません。ルール番号とその前のマイナス記号( "-")を指定して、コーディングルールを無効にします。プラス記号( "+")は、アクティブ化のために接頭辞が付けられます。プラグマでは、ルールをい
属性:analysis この属性は、プログラミングオブジェクト全体の特定のルールを無効にして、それらがに適用されないようにします。 静的コード分析 考慮されません。ルール番号と前のマイナス記号( "-")を指定して、コーディングルールを非アクティブ化します。属性には、ルールをいくつでも指定できます。 挿入位置 :1行目のプログラミングブロックの宣言部分。 構文 : {attribute 'anal
属性'naming' 属性は、によって使用されるコード行を識別します 命名規則の分析 除外されます。コード分析が中断されるコードの最初の行の前に、プラグマ属性がオンになっています off 、最後の行の後 on 割り当てられました。いつ omit 割り当てられると、コードの次の行のみが無視されます。 挿入位置 :非アクティブ化:関連する行の上のPOUおよびDUTの宣言部分。アクティベーション:関連す
SA0010:コンポーネントが1つしかないアレイ コンポーネントが1つしかない配列を検索します。 理由:1つのコンポーネントを持つ配列は、基本型の変数に置き換えることができます。この変数へのアクセスは、インデックスを使用して変数にアクセスするよりも大幅に高速です。 例外: 配列の長さは定数によって決定されることが多く、これはプログラムのパラメーターです。そうすれば、プログラムはさまざまな長さの配列
SA0011: メンバーが 1 つしかない無駄な宣言 メンバーが 1 つだけある構造体または列挙型を検出します 理由: メンバーが 1 つだけの構造体や列挙型は宣言すべきではありません。このような宣言は読者を混乱させる可能性があります。要素が 1 つだけある構造体は、エイリアス型で置き換えることができます。要素が 1 つだけある列挙は定数に置き換えることができます。 PLCopenルール:CP22
SA0012:定数として宣言できる変数 書き込みのためにアクセスされないため、定数として宣言できる変数を判別します。 正当性: 変数が宣言点でのみ書き込まれ、それ以外は読み取りのみに使用される場合、静的分析では変数も変更すべきではないと想定されます。まず、定数として宣言すると、プログラム変更時に変数が変更されないことがチェックされます。次に、定数として宣言すると、コードが高速になる可能性があります
SA0013:同じ変数名の宣言 他の変数によって既に使用されている名前を持つ変数を検出します (たとえば、同じ名前を持つグローバル変数とローカル変数)。同じアクセス範囲内で関数名、アクション名、メソッド名、またはプロパティ名が使用されている変数も検出されます。の GVL で宣言された変数も検出されます。 デバイス ビューまたは POU プール内で。ただし、この場合、 POU ビューはアプリケーショ
SA0014:インスタンスへの割り当て 機能ブロックインスタンスへの割り当てを決定します。ポインタ変数または参照変数を持つインスタンスの場合、これらの割り当てにはリスクが伴う可能性があります。 理由:これはパフォーマンスの警告です。インスタンスが別のインスタンスに割り当てられている場合、すべての要素とサブ要素が1つのインスタンスから別のインスタンスにコピーされます。データへのポインタもコピーされま
SA0015:FB_Initを介したグローバルデータへのアクセス メソッドを介したグローバル変数への関数ブロックのアクセスを決定します FB_Init 。この変数の値は、初期化の順序によって異なります。 理由:ブロックのインスタンスの宣言ポイントによっては、ルールに違反した場合に初期化されていない変数にアクセスする可能性があります。 重要性:高い 例 27 . 例 VAR_GLOBAL g_xTe
SA0016:構造のギャップ 現在設定されているターゲットシステムのアライメント要件によって引き起こされる構造または機能ブロックのギャップを特定します。可能であれば、構造要素を再配置するか、ダミー要素で埋めることによって、ギャップを削除する必要があります。これが不可能な場合は、プラグマを介して影響を受ける構造のルールを使用できます analysis 非アクティブ化します。 理由:プラットフォームご