fujitsu software pgreliefまた、環境変数...
TRANSCRIPT
FUJITSU Software
PGRelief
CI ツール連携
Jenkins プラグイン使用説明書
PGR-0003-05Z0(00)
2019年12月
i
はじめに CI(Continuous Integration、継続的インテグレーション)ツール連携 Jenkinsプラグインは、
PGRelief の実行結果を CIツール(Jenkins)で集約、表示するためのプラグインです。
CI ツール連携 Jenkins プラグインでは、以下の機能を提供します。
• PGReliefを Jenkinsのジョブから実行(※1)(※2)
• PGRelief 実行結果を Jenkins 上に表示(※2)
(※1) Jenkinsの 1 ジョブ実行につき、PGReliefの 1解析ライセンスを消費します。
(※2) PGRelief C/C++ の IPA/SEC検査機能、MISRAオプション、CERT オプションは使用でき
ません。
本書では、CI ツール連携 Jenkinsプラグインの使用方法について説明しています。
CI ツール連携 Jenkins プラグインの動作環境については下記ダウンロードサイトをご参照く
ださい。
PGRelief C/C++: https://www.fujitsu.com/jp/group/fst/products/pgr/download/
PGRelief J : https://www.fujitsu.com/jp/group/fst/products/pgr-java/download/
PGRelief が出力するプログラム欠陥に対する指摘メッセージについては「指摘詳細説明書」
(PGRelief C/C++)または「規約詳細説明書」(PGRelief J)をご参照ください。
PGRelief が出力するエラーメッセージやコマンドオプションについては、「コマンド解説書」
をご参照ください。
ii
[高度な安全性が要求される用途への使用について]
本製品は、一般事務用、パーソナル用、家庭用、通常の産業用等の一般的用途を想定して設
計・製造されているものであり、原子力施設における核反応制御、航空機自動飛行制御、航空交
通管制、大量輸送システムにおける運行制御、生命維持のための医療用機器、兵器システムにお
けるミサイル発射制御等、極めて高度な安全性が要求され、仮に当該安全性が確保されない場合、
直接生命・身体に対する重大な危険性を伴う用途(以下「ハイセイフティ用途」という)に使用
されるよう設計・製造されたものではございません。お客様は、当該ハイセイフティ用途に要す
る安全性を確保する措置を施すことなく、本製品を使用しないでください。ハイセイフティ用途
に使用される場合は、弊社の担当営業までご相談ください。
Microsoft、Windows、Windows Serverは、米国Microsoft Corporationの米国およびそ
の他の国における登録商標です。
MISRAとそのロゴはMISRAコンソーシアムを代表してMIRA Ltd.の登録商標です。
CERTは、米国Carnegie Mellon Universityの登録商標です。
その他本文で使用する製品名、サービス名は一般に各開発メーカーの商標です。
本資料には、「外国為替及び外国貿易管理法」に基づく特定技術が含まれています。従っ
て本資料またはその一部を輸出する場合には、同法に基づく許可が必要とされます。
株式会社富士通ソフトウェアテクノロジーズ
お願い
・ 本書の全体または一部を、無断で転載または複写することを禁じます。
・ 本書の内容は予告なく変更されることがあります。
All rights reserved, Copyright(C) 2016-2019 FUJITSU SOFTWARE TECHNOLOGIES LIMITED.
iii
目次
1. 動作環境 ................................................................ 1 1.1 動作 OS ................................................................ 1 1.2 JDK / JRE ............................................................. 1 1.3 CIツール .............................................................. 1 1.4 PGRelief .............................................................. 1
2. 準備 .................................................................... 2 2.1 PGReliefのインストール .................................................. 2 2.2 CIツール連携 Jenkinsプラグインのインストール ............................. 2 2.2.1 CIツール連携 Jenkinsプラグインの構成 ................................ 2 2.2.2 Mavenプラグインのインストール ........................................ 3
2.3 環境設定 .............................................................. 7 2.3.1 Jenkins システム設定 ................................................ 7
3. 実行・確認 .............................................................. 13 3.1 PGRelief Jを使用する場合 .............................................. 13 3.1.1 ビルドの設定 ...................................................... 13 3.1.2 Jenkins ジョブの設定 ............................................... 15 3.1.3 ビルドの実行 ...................................................... 21 3.1.4 ビルド結果の確認 .................................................. 22
3.2 PGRelief C/C++を使用する場合 .......................................... 25 3.2.1 ビルドの設定 ...................................................... 25 3.2.2 Jenkins ジョブの設定 ............................................... 27 3.2.3 ビルドの実行 ...................................................... 34 3.2.4 ビルド結果の確認 .................................................. 35
4. エラーメッセージ .......................................................... 38 5. 付録 ................................................................... 40
5.1 PGRelief J Mavenプラグインリファレンス ................................... 40 5.1.1 設定可能なプロパティ ............................................... 40 5.1.2 出力ファイル ....................................................... 41
5.2 PGRelief C/C++ Mavenプラグインリファレンス ............................... 42 5.2.1 設定可能なプロパティ ............................................... 42 5.2.2 出力ファイル ....................................................... 42
1
1. 動作環境
1.1 動作 OS
Windows、Red Hat Enterprise Linuxで動作します。
詳細は「はじめに」に記載のダウンロードサイトを参照してください。
1.2 JDK / JRE
詳細は「はじめに」に記載のダウンロードサイトを参照してください。
1.3 CI ツール
以下の CIツールで動作します。
• Jenkins
Jenkins で PGRelief実行結果を表示する場合は、下記 Jenkinsプラグインをインストー
ルする必要があります。
• Warnings Next Generation
また、Jenkins で Maven プロジェクトを使用する場合は、下記ソフトウェアが予めシステム
にインストールされている必要があります。
• Apache Maven
詳細は「はじめに」に記載のダウンロードサイトを参照してください。
1.4 PGRelief
以下の PGReliefに対応します。
• PGRelief Jフローティングライセンス
• PGRelief C/C++ フローティングライセンス
• PGRelief C/C++ 広域探索オプション(広域探索を実施する場合に必要)
詳細は「はじめに」に記載のダウンロードサイトを参照してください。
2
2. 準備
2.1 PGRelief のインストール
インストールガイドに従って、PGReliefをインストールします。
※ PGRelief Jには、動作環境として JDKが必要です。あらかじめ環境を準備してください。
また、環境変数 JAVA_HOMEに、JDKのインストールパスを設定してください。
2.2 CI ツール連携 Jenkins プラグインのインストール
Maven を利用して PGReliefを実行する場合のみ、インストールします。
2.2.1 CI ツール連携 Jenkins プラグインの構成
CI ツール連携 Jenkins プラグインは、「はじめに」に記載のダウンロードサイトの『CI ツー
ル連携 Jenkins プラグイン』からダウンロードし、インストールしてください。
ダウンロードした自己解凍形式のファイル『pgrelief-jenkins-plugin.exe』を任意の場所
にコピーして実行すると、『pgrelief-jenkins-plugin』フォルダが作成されます。
『pgrelief-jenkins-plugin』フォルダの内容は以下のとおりです。
フォルダ名 説明
PGRelief_MavenPlugin PGReliefの Mavenプラグインの格納フォルダ
『PGRelief_MavenPlugin』フォルダの内容は以下のとおりです。
ファイル名 説明
pgreliefj-maven-plugin-1.0.jar PGRelief Jの Mavenプラグイン
pgreliefc-maven-plugin-1.0.jar PGRelief C/C++の Mavenプラグイン
3
2.2.2 Maven プラグインのインストール
以下の手順は、Mavenのインストール、設定が完了していることを前提に説明しています。
PGRelief J Mavenプラグイン
① コマンドラインで、『PGRelief_MavenPlugin』フォルダに移動します。
② mvnコマンドを実行し、Maven プラグインをインストールします。
【Mavenローカルリポジトリにインストールする場合】
mvnコマンドには、以下の引数を指定します。
引数 説明
install:install-file ローカルリポジトリにプラグインをインスト
ールするためのゴール指定
-Dfile=pgreliefj-maven-plugin-
1.0.jar PGRelief J Mavenプラグインのファイル名
-DgroupId=com.fujitsu.jp.fst.p
grelief.maven
PGRelief J Mavenプラグインのルートパッケー
ジ名
-DartifactId=pgreliefj-maven-p
lugin PGRelief J Mavenプラグイン名
-Dversion=1.0 PGRelief J Mavenプラグインのバージョン
-Dpackaging=jar PGRelief J Mavenプラグインの形式
-DgeneratePom=true ローカルリポジトリにインストールするプラ
グインの POM生成
例:PGRelief J Maven プラグイン(バージョン 1.0)を Maven ローカル
リポジトリにインストールするコマンド
mvn install:install-file
-Dfile=pgreliefj-maven-plugin-1.0.jar
-DgroupId=com.fujitsu.jp.fst.pgrelief.maven
-DartifactId=pgreliefj-maven-plugin
-Dversion=1.0
-Dpackaging=jar
-DgeneratePom=true
4
【Mavenリモートリポジトリにインストールする場合】
mvnコマンドには、以下の引数を指定します。
引数 説明
deploy:deploy-file リモートリポジトリにプラグインをインスト
ールするためのゴール指定
-Durl=「リポジトリ URL」 プラグインをインストールするリモートリポ
ジトリの URL
-DrepositoryId=「リポジトリ ID」 プラグインをインストールするリモートリポ
ジトリの ID
-Dfile=pgreliefj-maven-plugin-
1.0.jar PGRelief J Mavenプラグインのファイル名
-DgroupId=com.fujitsu.jp.fst.p
grelief.maven
PGRelief J Mavenプラグインのルートパッケー
ジ名
-DartifactId=pgreliefj-maven-p
lugin PGRelief J Mavenプラグイン名
-Dversion=1.0 PGRelief J Mavenプラグインのバージョン
-Dpackaging=jar PGRelief J Mavenプラグインの形式
-DgeneratePom=true ローカルリポジトリにインストールするプラ
グインの POM生成
例:PGRelief J Maven プラグイン(バージョン 1.0)を Maven リモート
リポジトリにインストールするコマンド
mvn deploy:deploy-file
-Durl=http://xx.xxx.xxx.xxx/repository
-DrepositoryId=my-repository
-Dfile=pgreliefj-maven-plugin-1.0.jar
-DgroupId=com.fujitsu.jp.fst.pgrelief.maven
-DartifactId=pgreliefj-maven-plugin
-Dversion=1.0
-Dpackaging=jar
-DgeneratePom=true
5
PGRelief C/C++ Maven プラグイン
① コマンドラインで、『PGRelief_MavenPlugin』フォルダに移動します。
② mvnコマンドを実行し、Maven プラグインをインストールします。
【Mavenローカルリポジトリにインストールする場合】
mvnコマンドには、以下の引数を指定します。
引数 説明
install:install-file ローカルリポジトリにプラグインをインスト
ールするためのゴール指定
-Dfile=pgreliefc-maven-plugin-
1.0.jar PGRelief C/C++ Maven プラグインのファイル名
-DgroupId=com.fujitsu.jp.fst.p
grelief.maven
PGRelief C/C++ Maven プラグインのルートパッ
ケージ名
-DartifactId=pgreliefc-maven-p
lugin PGRelief C/C++ Maven プラグイン名
-Dversion=1.0 PGRelief C/C++ Maven プラグインのバージョン
-Dpackaging=jar PGRelief C/C++ Maven プラグインの形式
-DgeneratePom=true ローカルリポジトリにインストールするプラ
グインの POM生成
例:PGRelief C/C++ Mavenプラグイン(バージョン 1.0)を Mavenローカル
リポジトリにインストールするコマンド
mvn install:install-file
-Dfile=pgreliefc-maven-plugin-1.0.jar
-DgroupId=com.fujitsu.jp.fst.pgrelief.maven
-DartifactId=pgreliefc-maven-plugin
-Dversion=1.0
-Dpackaging=jar
-DgeneratePom=true
6
【Mavenリモートリポジトリにインストールする場合】
mvnコマンドには、以下の引数を指定します。
引数 説明
deploy:deploy-file リモートリポジトリにプラグインをインスト
ールするためのゴール指定
-Durl=「リポジトリ URL」 プラグインをインストールするリモートリポ
ジトリの URL
-DrepositoryId=「リポジトリ ID」 プラグインをインストールするリモートリポ
ジトリの ID
-Dfile=pgreliefc-maven-plugin-
1.0.jar PGRelief C/C++ Maven プラグインのファイル名
-DgroupId=com.fujitsu.jp.fst.p
grelief.maven
PGRelief C/C++ Maven プラグインのルートパッ
ケージ名
-DartifactId=pgreliefc-maven-p
lugin PGRelief C/C++ Maven プラグイン名
-Dversion=1.0 PGRelief C/C++ Maven プラグインのバージョン
-Dpackaging=jar PGRelief C/C++ Maven プラグインの形式
-DgeneratePom=true ローカルリポジトリにインストールするプラ
グインの POM生成
例:PGRelief C/C++ Mavenプラグイン(バージョン 1.0)を Mavenリモート
リポジトリにインストールするコマンド
mvn deploy:deploy-file
-Durl=http://xx.xxx.xxx.xxx/repository
-DrepositoryId=my-repository
-Dfile=pgreliefc-maven-plugin-1.0.jar
-DgroupId=com.fujitsu.jp.fst.pgrelief.maven
-DartifactId=pgreliefc-maven-plugin
-Dversion=1.0
-Dpackaging=jar
-DgeneratePom=true
7
2.3 環境設定
Jenkinsが PGRelief を実行、および結果表示するために必要な設定について説明します。
2.3.1 Jenkins システム設定
PGRelief のライセンス管理サーバの情報、PGRelief の実行、および結果表示に必要な情報を
Jenkinsに設定します。
PGRelief の結果表示を行う場合は、Warnings Next Generation があらかじめシステムにイン
ストールされている必要があります。
① ダッシュボードの左ペインの「Jenkins の管理」をクリックします。
② 「システムの設定」をクリックします。
8
③ グローバル プロパティの「環境変数」をチェックします。
④ 「キーと値のリスト」の「追加」ボタンをクリックします。
9
⑤ 「キー」と「値」を設定します。
PGRelief ライセンスサーバ設定
キー FST_LICENSE_FILE
値 port@host
PGRelief 起動時のライセンスサーバ認証の設定です。値には以下の情報を指定します。
・port : ポート番号
PGRelief のライセンスサーバシステムが使用するポートを指定します。
PGRelief ライセンスサーバのインストール時にポート番号を明示的に指定しなかっ
た場合は、ポート番号は省略可能です。
ライセンスサーバインストール時のポート番号の指定方法については、ライセンス
サーバ管理者に問い合わせてください。
・host : ライセンス管理サーバの IP アドレス または ホスト名
ポート番号を省略する場合も、必ず 「@」 を先頭につけてください。
※ キーが未設定の場合、動作環境によっては Jenkins から PGRelief を実行できない
可能性があります。
PGRelief ライセンス認証ポップアップ非表示設定
キー FLEXLM_BATCH
値 1
PGRelief 起動時のライセンス認証ポップアップを非表示にする設定です。
※ キーが未設定の場合、ライセンス認証ポップアップが表示され、Jenkins のジョブ
実行が進行しなくなる可能性があります。
10
PGRelief 各種パス設定
【PGRelief Jを使用する場合】
キー PGRJ_HOME
値 PGRelief インストールディレクトリ\PGReliefJava
【PGRelief C/C++を使用する場合】
キー EPOMDIR
値 Windowsの場合:
PGReliefインストールディレクトリ\PGRelief\Analyze\EPOM
Linux の場合:
PGRelief インストールディレクトリ/FFSTpgr/FFSTpgr/Analyze/EPOM
キー PATH (Linux のみ)
値 PGRelief インストールディレクトリ/FFSTpgr/FFSTpgr/Analyze/EPOM
キー LD_LIBRARY_PATH (Linuxのみ)
値 PGRelief インストールディレクトリ/FFSTpgr/FFSTpgr/Analyze/EPOM/lib
※ キーが未設定の場合、動作環境によっては Jenkins から PGRelief を実行できない
可能性があります。
⑥ (PGRelief の実行結果を Jenkins に表示させる場合) Groovy Based Warnings Parsers
の「Parsers」を設定します。
11
PGRelief 実行結果表示設定
【PGRelief Jを使用する場合】
名前 PGRelief J
ID pgrelief_j
正規表現 (.*),(\d+),([^,]*),([^,]*),(.*)
マッピング
スクリプト
import edu.hm.hafner.analysis.Severity
builder.setFileName(matcher.group(1))
.setLineStart(Integer.parseInt(matcher.group(2)))
.setCategory(matcher.group(3))
.setType(matcher.group(4))
.setMessage(matcher.group(5))
if(matcher.group(3).startsWith("S") || matcher.group(3).startsWith
("!") ){
builder.setSeverity(Severity.WARNING_HIGH)
}else if(matcher.group(3).startsWith("W")){
builder.setSeverity(Severity.WARNING_NORMAL)
}else{
builder.setSeverity(Severity.WARNING_LOW)
}
return builder.buildOptional();
ログメッセ
ージ
SJIS
ソースファイル名,行番号,グループ,指摘 ID,メッセージ
C:\sampleDir\sample.java,1,W:信頼性,pgj00000, サンプルメッセージ
12
【PGRelief C/C++を使用する場合】
名前 PGRelief C
ID pgrelief_c
正規表現 \"(.*)\",(\d+),\"(.)\",\"([^,]*)\",\"(.*)\"
マッピング
スクリプト
import edu.hm.hafner.analysis.Severity
builder.setFileName(matcher.group(1))
.setLineStart(Integer.parseInt(matcher.group(2)))
.setCategory(matcher.group(3))
.setType(matcher.group(4))
.setMessage(matcher.group(5))
if(matcher.group(3).equals("a") || matcher.group(3).equals("!") ){
builder.setSeverity(Severity.WARNING_HIGH)
}else if(matcher.group(3).equals("b") || matcher.group(3).equals("h
")){
builder.setSeverity(Severity.WARNING_NORMAL)
}else{
builder.setSeverity(Severity.WARNING_LOW)
}
return builder.buildOptional();
ログメッセ
ージ
SJIS
"ソースファイル名",行番号,"グループ","指摘 ID","メッセージ"
"C:\sampleDir\sample.c",1,"a","pgr0000","サンプルメッセージ"
13
3. 実行・確認
3.1 PGRelief J を使用する場合
3.1.1 ビルドの設定
ビルド環境に合わせて、Maven、Windowsバッチコマンドのいずれかに、PGRelief J の実行に
必要な設定を記述します。以下は、設定例です。
Maven の場合
POMファイル(pom.xml)に、PGRelief Jの設定を記述します。
以下は、Jenkins ジョブのワークスペースを「C:\Jenkins\Workspace」に設定した場合の
例です。
詳細は「5.1.1設定可能なプロパティ」を参照してください。
:
<build>
<plugins>
:
<!-- PGRelief J の Mavenプラグインの設定 -->
<plugin>
<groupId>com.fujitsu.jp.fst.pgrelief.maven</groupId>
<artifactId>pgreliefj-maven-plugin</artifactId>
<version>1.0</version>
<!-- 必要に応じてプロパティを追加 -->
<configuration>
<pgrCheckRuleDefinitionFile>C:/Program Files/PGRelief/PGReliefJava/rule.pg
rj</pgrCheckRuleDefinitionFile>
<pgrOutputDirectory>C:/Jenkins/Workspace/Report</pgrOutputDirectory>
</configuration>
<executions>
<execution>
<!-- PGRelief Jを実行するフェーズ -->
<phase>verify</phase>
<goals>
<!-- PGRelief Jの Mavenプラグインが提供するゴール (必須) -->
<goal>pgreliefj</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
:
14
Windowsバッチコマンドの場合
Windowsバッチファイルに、PGRelief Jの設定を記述します。
以下は、Jenkins ジョブのワークスペースを「C:\Jenkins\Workspace」に設定した場合の
例です。
PGRelief Jが提供する、pgrjava コマンドを指定します。
pgrjavaコマンド形式は、PGRelief Jの「コマンド解説書」を参照してください。
"C:\Program Files\PGRelief\PGReliefJava\pgrjava.bat"
"C:\Jenkins\Workspace\ProjectJ\src" "C:\Jenkins\Workspace\ProjectJ\bin"
"C:\Jenkins\Workspace\Report\pgreliefj_message.csv"
15
3.1.2 Jenkins ジョブの設定
フリースタイル・プロジェクトのビルドジョブを使用する場合
① 「ビルド」の「ビルド手順の追加」をクリックします。
② 追加するビルド手順をクリックします。
※ 「3.1.1 ビルドの設定」 で設定したものを指定します。
※ PGRelief J は、「シェルの実行」には対応していません。
16
1. 「Mavenの呼び出し」を選択した場合
「Mavenの呼び出し」の「ゴール」を指定します。
※ 「ゴール」には、「3.1.1 ビルドの設定」の POMファイル(pom.xml)に設定したフェ
ーズ、または PGRelief Maven プラグインが提供するゴール(pgreliefj)を指定します。
2. 「Windowsバッチコマンドの実行」を選択した場合
「Windowsバッチコマンドの実行」の「コマンド」を指定します。
※ 「コマンド」には、call コマンドに続いて、「3.1.1 ビルドの設定」で作成した
Windowsバッチファイルを指定します。
17
③ 「ビルド後の処理」の「ビルド後の処理の追加」をクリックします。
④ 「Record compiler warning and static analysis result」をクリックします。
18
⑤ 「Static Analysis Tools」を設定します。
名前 値 説明
Tool Groovy Parser 「 Record compiler warning and static
analysis result」機能で使用するツール
を指定します。(固定値)
Parser PGRelief J 「 Record compiler warning and static
analysis result」機能で使用するパーサ
ーを指定します。(固定値)
予め Jenkins にパーサー(Groovy Based
Warnings Parsers)を設定する必要があり
ます。詳細は「2.3.1 Jenkins システム設
定」を参照してください。
Report File
Pattern
Report/pgreliefj_message.csv PGRelief J の実行結果ファイルを指定し
ます。
値はビルド設定によって異なります。
「3.1.1 ビルドの設定」に記載の例の場合、
「Report/pgreliefj_message.csv」を指
定します。
Report
Encoding
Shift_JIS PGRelief J の実行結果ファイルの文字コ
ードを指定します。(固定値)
19
Mavenプロジェクトのビルドジョブを使用する場合
① 「ビルド」の「ゴールとオプション」にゴールを指定します。
※ 「ゴール」には、「3.1.1 ビルドの設定」の POM ファイル(pom.xml)に設定したフェーズ、
または PGRelief Mavenプラグインが提供するゴール(pgreliefj)を指定します。
② 「ビルド後の処理」の「ビルド後の処理の追加」をクリックします。
20
③ 「Record compiler warning and static analysis result」をクリックします。
④ 「Static Analysis Tools」を設定します。
※ 設定内容は「フリースタイル・プロジェクトのビルドジョブを使用する場合」と同様で
す。
21
3.1.3 ビルドの実行
Jenkinsのビルドジョブを実行します。
Jenkinsのダッシュボードを開き、以下のいずれかの操作を行います。
ビルド実行アイコンをクリックします。
対象のジョブをクリックし、ペインに表示される「ビルド実行」をクリックします。
22
3.1.4 ビルド結果の確認
ビルド結果は、Jenkinsのダッシュボードに表示されます。
「すべて」ビューから対象のジョブをクリックし、ビルドが成功していることと PGRelief の
解析結果が出力されていることを確認します。
① Jenkinsのダッシュボードを開きます。
② 「すべて」ビューから対象のジョブをクリックします。
23
③ 左ペイン「ビルド履歴」から、最新のビルドをクリックします。
④ Jenkins のダッシュボード上にエラーメッセージが出力されていないことを確認しま
す。
24
⑤ 左ペインの「PGRelief J Warnings」をクリックします。
⑥ PGRelief の解析結果が表示されていることを確認します。
25
3.2 PGRelief C/C++を使用する場合
3.2.1 ビルドの設定
ビルド環境に合わせて、Maven、Windowsバッチコマンド、シェルのいずれかに、PGRelief C/C++
の実行に必要な設定を記述します。以下は、設定例です。
Maven の場合
POMファイル(pom.xml)に、PGRelief C/C++の設定を記述します。
以下は、Jenkins ジョブのワークスペースを「C:\Jenkins\Workspace」に設定した場合の
例です。
詳細は「5.2.1 設定可能なプロパティ」を参照してください。
:
<build>
<plugins>
:
<!-- PGRelief C/C++ の Maven プラグインの設定 -->
<plugin>
<groupId>com.fujitsu.jp.fst.pgrelief.maven</groupId>
<artifactId>pgreliefc-maven-plugin</artifactId>
<version>1.0</version>
<!-- 必要に応じてプロパティを追加 -->
<configuration>
<pgrOutputDirectory>C:/Jenkins/Workspace/Report</pgrOutputDirectory>
<pgrOptions>
<pgrOption>-Z"C:/Program Files/PGRelief/PGRelief/Analyze/EPOM/MessageInfo/
default-pgr.rul"</pgrOption>
<!-- その他の追加例
<pgrOption>-KMS/VC2010</pgrOption>
<pgrOption>-Y"C:/Jenkins/Workspace/ProjectC/stdinc"</pgrOption>
<pgrOption>-I"C:/Jenkins/Workspace/ProjectC/priinc"</pgrOption>
<pgrOption>-D_DEBUG</pgrOption>
<pgrOption>-SSJIS</pgrOption>
-->
</pgrOptions>
</configuration>
<executions>
<execution>
<!-- PGRelief C/C++を実行するフェーズ -->
<phase>verify</phase>
<goals>
<!-- PGRelief C/C++の Maven プラグインが提供するゴール (必須) -->
<goal>pgreliefc</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
:
26
Windowsバッチコマンドの場合
Windowsバッチファイルに、PGRelief C/C++の設定を記述します。
以下は、Jenkins ジョブのワークスペースを「C:\Jenkins\Workspace」に設定した場合の
例です。
PGRelief C/C++が提供する、pgr5 コマンドを指定します。--qm オプションは必須です。
pgr5コマンド形式は、PGRelief C/C++の「コマンド解説書」を参照してください。
シェルの場合
シェルスクリプトに、PGRelief C/C++の設定を記述します。
以下は、Jenkins ジョブのワークスペースを「/home/Jenkins/Workspace」に設定した場
合の例です。
PGRelief C/C++が提供する、pgr5 コマンドを指定します。--qm オプションは必須です。
pgr5コマンド形式は、PGRelief C/C++の「コマンド解説書」を参照してください。
"C:\Program Files\PGRelief\PGRelief\Analyze\EPOM\pgr5.exe"
--qm
"C:\Jenkins\Workspace\ProjectC\src\sample1.c" >
"C:\Jenkins\Workspace\Report\pgreliefc_message.csv"
"/opt/FFSTpgr/FFSTpgr/Analyze/EPOM/pgr5"
--qm
"/home/Jenkins/Workspace/ProjectC/src/sample1.c" >
"/home/Jenkins/Workspace/Report/pgreliefc_message.csv"
27
3.2.2 Jenkins ジョブの設定
フリースタイル・プロジェクトのビルドジョブを使用する場合
① 「ビルド」の「ビルド手順の追加」をクリックします。
② 追加するビルド手順をクリックします。
※ 「3.2.1 ビルドの設定」 で設定したものを指定します。
28
1. 「Mavenの呼び出し」を選択した場合
「Mavenの呼び出し」の「ゴール」を指定します。
※ 「ゴール」には、「3.2.1 ビルドの設定」の POMファイル(pom.xml)に設定したフェ
ーズ、または PGRelief Maven プラグインが提供するゴール(pgreliefc)を指定します。
2. 「Windowsバッチコマンドの実行」を選択した場合
「Windowsバッチコマンドの実行」の「コマンド」を指定します。
※ 「コマンド」には、callコマンドに続いて、「3.2.1 ビルドの設定」で作成した Windows
バッチファイルを指定します。
29
3. 「シェルの実行」を選択した場合
「シェルの実行」の「コマンド」を指定します。
※ 「シェルスクリプト」には、sh コマンドに続いて、「3.2.1 ビルドの設定」で作成
したシェルスクリプトを指定します。
③ 「ビルド後の処理」の「ビルド後の処理の追加」をクリックします。
30
④ 「Record compiler warning and static analysis result」をクリックします。
⑤ 「Static Analysis Tools」を設定します。
名前 値 説明
Tool Groovy Parser 「 Record compiler warning and static
analysis result」機能で使用するツール
を指定します。(固定値)
Parser PGRelief C 「 Record compiler warning and static
analysis result」機能で使用するパーサ
ーを指定します。(固定値)
予め Jenkins にパーサー(Groovy Based
Warnings Parsers)を設定する必要があり
ます。詳細は「2.3.1 Jenkins システム設
定」を参照してください。
31
Report File
Pattern
Report/pgreliefc_message.csv PGRelief C/C++の実行結果ファイルを指定
します。
値はビルド設定によって異なります。
「3.2.1 ビルドの設定」に記載の例の場合、
「Report/pgreliefc_message.csv」を指
定します。
Report
Encoding
(指定なし) PGRelief C/C++の実行結果ファイルの文字
コードを指定します。
値はビルド設定によって異なります。
「3.2.1 ビルドの設定」に記載の例の場合、
何も指定しません。
Mavenプロジェクトのビルドジョブを使用する場合
① 「ビルド」の「ゴールとオプション」にゴールを指定します。
※ 「ゴール」には、「3.2.1 ビルドの設定」の POM ファイル(pom.xml)に設定したフェーズ、
または PGRelief Mavenプラグインが提供するゴール(pgreliefc)を指定します。
32
② 「ビルド後の処理」の「ビルド後の処理の追加」をクリックします。
③ 「Record compiler warning and static analysis result」をクリックします。
33
④ 「Static Analysis Tools」を設定します。
※ 設定内容は「フリースタイル・プロジェクトのビルドジョブを使用する場合」と同様で
す。
34
3.2.3 ビルドの実行
Jenkinsのビルドジョブを実行します。
Jenkinsのダッシュボードを開き、以下のいずれかの操作を行います。
ビルド実行アイコンをクリックします。
対象のジョブをクリックし、ペインに表示される「ビルド実行」をクリックします。
35
3.2.4 ビルド結果の確認
ビルド結果は、Jenkinsのダッシュボードに表示されます。
「すべて」ビューから対象のジョブをクリックし、ビルドが成功していることと PGRelief の
解析結果が出力されていることを確認します。
① Jenkinsのダッシュボードを開きます。
② 「すべて」ビューから対象のジョブをクリックします。
36
③ 左ペイン「ビルド履歴」から、最新のビルドをクリックします。
④ Jenkins のダッシュボード上にエラーメッセージが出力されていないことを確認しま
す。
37
⑤ 左ペインの「PGRelief C Warnings」をクリックします。
⑥ PGRelief の解析結果が表示されていることを確認します。
38
4. エラーメッセージ
Maven プラグイン関連のエラーメッセージ
エラーメッセージ書式
[@1] @2 @3:@4
書式説明
@1 エラーレベルが表示されます。詳細は以下のメッセージ一覧を参照してくださ
い。
@2 Maven が出力するエラーメッセージが表示されます。(表示が省略される場合も
あります)
@3 "PGRelief J Maven Plugin Error"または"PGRelief C Maven Plugin Error"のい
ずれかが表示されます。
@4 エラーメッセージが表示されます。詳細は以下のメッセージ一覧を参照してくだ
さい。
メッセージ一覧
エ ラ ー
レベル
メッセージ 説明 対処方法
ERROR Failed to execute
PGRelief J.
または
Failed to execute
PGRelief C/C++.
PGRelief コマンドの実行
においてエラーが発生し
ました。
PGRelief 出力ファイルの内
容を確認してください。
【PGRelief Jの場合】
pgreliefj_message.csv
または
pgreliefj_result.txt
【PGRelief C/C++の場合】
pgreliefc_message.csv
または
pgreliefc_result.txt
PGRelief が出力するエラー
メッセージは「コマンド解説
書」を参照してください。
ERROR Plugin execute
error.
PGReliefの Mavenプラグ
インの実行に失敗しまし
た。
PGRelief 出力ファイルの内
容を確認してください。
【PGRelief Jの場合】
pgreliefj_message.csv
または
pgreliefj_result.txt
【PGRelief C/C++の場合】
pgreliefc_message.csv
または
pgreliefc_result.txt
39
ERROR Install directory
setting error.
PGRelief のインストール
ディレクトリが設定され
ていません。
【PGRelief Jの場合】
環境変数 PGRJ_HOMEを設
定してください。
【PGRelief C/C++の場合】
環境変数 EPOMDIRを設定
してください。
ERROR Install directory @1
is not exist.
@1:ディレクトリ
PGRelief のインストール
ディレクトリの設定に問
題があります。
【PGRelief Jの場合】
環境変数 PGRJ_HOMEを正
しく設定してください。
【PGRelief C/C++の場合】
環境変数 EPOMDIRを正し
く設定してください。
ERROR Unsafe command line
string.
解析を実施するコマンド
ライン文字列に以下の文
字が含まれています。
;|&`()$<>*?{}[]!
左記の文字はコマンドライ
ン文字列には含まないよう
にしてください。
WARNING Skip non existing
source Directory. @1
No sources to
analyze.
@1:ディレクトリ
解析対象のファイルが存
在しません。
マルチモジュール・プロ
ジェクトなどで解析対象
とするソースファイルが
存在しないプロジェクト
がある場合に、この警告
メッセージが表示される
場合があります。
ソースディレクトリやソー
スファイルの指定に誤りが
無いか確認してください。
40
5. 付録
5.1 PGRelief J Maven プラグインリファレンス
PGRelief J Mavenプラグインは、PGRelief J(pgrjavaコマンド)を実行し、結果を出力します。
基本情報
groupId com.fujitsu.jp.fst.pgrelief.maven
artifactId pgreliefj-maven-plugin
バージョン 1.0
フェーズ(デフォルト) verify
提供するゴール pgreliefj
5.1.1 設定可能なプロパティ
POMファイル(pom.xml)には、configurationタグで、以下のプロパティを設定することができ
ます。必要に応じて設定してください。
ただし、省略値のあるプロパティは、特別な理由がない限り設定する必要はありません。
名前 型 説明 省略値
pgrCheckRu
leDefiniti
onFile
ファイル 検査指摘定義ファイルをフルパ
スで指定してください。
(pgrjava コマンドの -r オプシ
ョンに相当)
環境変数 PGRJ_HOME で設定さ
れるディレクトリ配下の検査
規約定義ファイル(rule.pgrj)
pgrSrcDire
ctory
ファイル ソースディレクトリ、チェック対
象のソースファイルが格納され
ているディレクトリをフルパス
で指定してください。
Maven プロジェクトのコンパイ
ルソースディレクトリリスト
の先頭ディレクトリ
(デフォルトプロパティ:
${project.compileSourceRoot
s})
pgrClasses
Directory
ファイル クラスディレクトリ、チェック対
象のクラスファイル(class ファ
イル)が格納されているディレク
トリをフルパスで指定してくだ
さい。
Maven プロジェクトの ターゲ
ットディレクトリ配下の
classes
(デフォルトプロパティ:
${project.build.directory}/
classes)
pgrClassPa
thListFile
ファイル クラスパスリストファイル、クラ
スパスリストを記述したファイ
ルをフルパスで指定してくださ
い。
(pgrjava コマンドの -af オプシ
ョンに相当)
Maven プロジェクトのクラスパ
スリスト
pgrOutputD
irectory
ファイル PGRelief J 実行結果出力先ディ
レクトリを指定してください。
※ 指定したディレクトリに
"pgreliefj_message.csv"
で結果を出力します。
Maven プロジェクトのビルド先
ディレクトリ
(デフォルトプロパティ:
${project.build.directory})
41
pgrEncodin
g
文字列 チェック対象の Javaソースのコ
ード系を指定してください。
設定値は以下の何れかです。
MS932 | EUC-JP | UTF-8
(pgrjava コマンドの -e オプシ
ョンに相当)
Maven プロジェクトビルド対象
のエンコーディング
(デフォルトプロパティ:
${project.build.sourceEncod
ing})
※ ただし、PGRelief J で識別
できないコード指定となる場
合があります。その際は、省略
せずに、左記の何れかを指定し
てください。
pgrOptions リスト pgrjava コマンドのオプション
を指定してください。
指定なし。
5.1.2 出力ファイル
PGRelief の実行が終了すると、以下のファイルが出力されます。
ファイル名 出力内容 出力先
pgreliefj_message.csv PGRelief J 指摘メッセー
ジ
POMファイル内の
pgrOutputDirectory プロパティで指
定したディレクトリ
pgreliefj_result.txt pgrjavaコマンドの標準出
力
POMファイル内の
pgrOutputDirectory プロパティで指
定したディレクトリ
42
5.2 PGRelief C/C++ Maven プラグインリファレンス
PGRelief C/C++ Maven プラグインは、PGRelief C/C++(pgr5 コマンド)を実行し、結果を出力
します。
基本情報
groupId com.fujitsu.jp.fst.pgrelief.maven
artifactId pgreliefc-maven-plugin
バージョン 1.0
フェーズ(デフォルト) verify
提供するゴール pgreliefc
5.2.1 設定可能なプロパティ POMファイル(pom.xml)には、configuration タグで、以下のプロパティを設定することができ
ます。必要に応じて設定してください。
ただし、省略値のあるプロパティは、特別な理由がない限り設定する必要はありません。
名前 型 説明 省略値
pgrSrcDire
ctory
ファイル ソースディレクトリ、チェック対
象のソースファイルが格納され
ているディレクトリをフルパス
で指定してください。
Maven プロジェクトの src ディ
レクトリ
(デフォルトプロパティ:
${project.basedir}/src)
pgrCpluspl
usExt
リスト C++ソースファイルの拡張子を指
定してください。
.cc および .cpp
pgrOutputD
irectory
ファイル PGRelief C/C++ 実行結果出力先
ディレクトリを指定してくださ
い。
※ 指定したディレクトリに
"pgreliefc_message.csv"
で結果を出力します。
Maven プロジェクトのビルド先
ディレクトリ
(デフォルトプロパティ:
${project.build.directory})
pgrOptions リスト pgr5 コマンドのオプションを指
定してください。
指定なし
5.2.2 出力ファイル
PGRelief の実行が終了すると、以下のファイルが出力されます。
ファイル名 出力内容 出力先
pgreliefc_message.csv PGRelief C/C++ 指摘メッ
セージ
POMファイル内の
pgrOutputDirectory プロパティで指
定したディレクトリ
pgreliefc_result.txt pgr5コマンドの標準出力 POMファイル内の
pgrOutputDirectory プロパティで指
定したディレクトリ