このセクションでは、ソース コードまたは抑制ファイルで Parasoft 製品の指摘事項を手動で抑制する方法を説明します。IDE の UI を使用した指摘事項の抑制については「GUI での指摘事項の抑制」を参照してください。

はじめに

違反を抑制すると、 Jtest は特定の静的解析タスクをそれ以降レポートしなくなります。全般的にコーディング規約に従いつつ、レポートされた指摘のうちの一部だけをあえて無視する場合、抑制機能が便利です。特定のルールのすべての違反メッセージを受け取りたくない場合は、テスト コンフィギュレーションでルールを無効にします。

ソース コードでの抑制の定義

次の構文を使用してソース コード内に抑制を定義します

行単位の抑制

<suppression keyword> [<rule category> | <rule category> . <rule id> | <rule category > - <rule severity> | ALL ] <suppression comment>

サンプル

// parasoft-suppress CODSTA "suppress all rules in category CODSTA"

// parasoft-suppress CODSTA.NEA "suppress rule CODSTA.NEA"

// parasoft-suppress CODSTA-1 "suppress all rules in category CODSTA with severity level 1"

// parasoft-suppress ALL "suppress all rules"

// parasoft-suppress CODSTA FORMAT.MCH JAVADOC-3 "suppress all rules in category CODSTA and rule FORMAT.MCH and all rules in category JAVADOC with severity level 3"

ブロック単位の抑制

<begin suppression keyword> [<rule category> | <rule category> . <rule id> | <rule category > - <rule severity> | ALL ] <suppression comment>

 ..... source code block .....

<end suppression keyword> [<rule category> | <rule category> . <rule id> | <rule category > - <rule severity> | ALL ] <suppression comment>

サンプル

// parasoft-begin-suppress CODSTA "begin suppress all rules in category CODSTA"
.....
// parasoft-end-suppress CODSTA "end suppress all rules in category CODSTA"

// parasoft-begin-suppress CODSTA.NEA "begin suppress rule CODSTA.NEA"
.....
// parasoft-end-suppress CODSTA.NEA "end suppress rule CODSTA.NEA"
 
// parasoft-begin-suppress CODSTA-1 "begin suppress all rules in category CODSTA with severity level 1"
......
// parasoft-end-suppress CODSTA-1 "end suppress all rules in category CODSTA with severity level 1"

//parasoft-begin-suppress ALL "begin suppress all rules"
.....
// parasoft-end-suppress ALL "end suppress all rules"

// parasoft-begin-suppress CODSTA FORMAT.MCH "begin suppress all rules in category CODSTA and rule FORMAT.MCH"
.....
// parasoft-end-suppress CODSTA FORMAT.MCH "end suppress all rules in category CODSTA and rule FORMAT.MCH"

// parasoft-begin-suppress CODSTA "begin suppress all rules in category CODSTA"
.....
// parasoft-end-suppress CODSTA-1 "end suppress all rules in category CODSTA with severity level 1; however rules with severity level 2-5 in category CODSTA are still suppressed."
.....
// parasoft-end-suppress CODSTA "end suppress all rules in category CODSTA"
 
// parasoft-begin-suppress ALL "begin suppress all rules"
.....
// parasoft-end-suppress CODSTA FORMAT-1 "end suppress all rules in category CODSTA and all rules in category FORMAT with severity level 1; however, others rules in CODSTA and FORMAT-1 are still suppressed."
.....
// parasoft-end-suppress ALL "end suppress all rules"
 
//parasoft-begin-suppress ALL "begin suppress all rules, since no end suppression comment, all rules will be suppressed starting from this line"

抑制ファイルでの抑制の定義

特定の指摘事項のレポートを抑制するには、parasoft.suppress ファイルを作成し、抑制対象の指摘事項の属性を指定します。抑制ファイルは、指摘事項を含むソース ファイルと同じディレクトリに置く必要があります。

抑制ファイルをソース管理システムにチェックインすることを推奨します。そうすると、抑制に関する情報を他のチーム メンバーと共有でき、master、trunk などのメインの開発ストリームにコードをマージする前に SCM リポジトリのブランチで容易に抑制をレビューできます。

parasoft.suppress ファイルに抑制エントリを追加するには、次のフォーマットを使用します。

suppression-begin
file: Account.java                (required)
line: 12                          (optional)
rule-id: CODSTA-123               (optional)
message: Exact violation message  (optional)
reason: Approved                  (optional)
author: devel                     (optional)
date: 2020-09-21                  (optional)
suppression-end

サンプル

最低でも、問題が検出されたソース ファイルを指定する必要があります。ソース ファイルだけを指定すると、指定されたファイルに対してレポートされたすべての指摘事項が抑制されます。次のサンプルでは、Account ファイルで検出されたすべての違反が抑制されます。

suppression-begin
file: Account.java
suppression-end
他の属性は任意であり、抑制を細かく制御するのに利用できます。次のサンプルでは、Account ファイルで検出された PB.TYPO.TLS ルールのすべての違反が、違反が発生した行にかかわらず抑制されます。
suppression-begin
file: Account.java
rule-id: PB.TYPO.TLS
suppression-end

属性に関する注意点

  • 抑制の理由を記述するのは良いプラクティスです。
  • line 属性の使用には注意が必要です。ソース ファイルが変更され、コードが別の行に移動すると、抑制が無効になる可能性があります。

  • No labels