初心者向けCI/CD実践 - Part5 - CI/CDツールとその他ツールの併用例（インスペクションツール）編

# CI/CD環境を構築
本連載は、「CI/CDを実践してみたい」という超初心者向けの内容となっています
enterpriseレベルやproductionレベルの導入に際して、「CI/CDとは？」という感覚をつかむものとなれば幸いです。
利用するツール等はこちらで選定していますので、別のツールを利用する場合は、適宜お調べください。
大まかな内容としては、以下のようなフローとなります

>1. 環境構築
2. CI/CDツールの構築
3. 開発プロジェクトの準備
    - GitHubにプロジェクトデータを登録
    - Jenkins Pluginのインストール
    - 手動ビルド
4. **CI/CDツールとその他ツールの併用例**
    1. テストツールとの協調
    2. **インスペクションツールとの協調<-今回はここを説明**
5. pipelineの実現

## <font color="Red">概要</font>
>- ```Checkstyle```,```FindBugs```によるインスペクションをジョブに組み込む
- インスペクション結果の確認方法
- 結果から修正の高速サイクルを実感

### ジョブの編集（インスペクションの自動化）
[テストツールとの協調](https://qiita.com/tem-individual/items/3b7d0b1d28ec8288b8a3)と同じ方法でビルド後の処理を追加する
今回はインスペクションツールとして、以下の2つを利用する
>- Checkstyle
- FindBugs

手順は以下の通り、
```JenkinsJOB```のジョブを以下の手順で編集する
1. dashboardから中央ペインの```JenkinsJOB```を選択
2. 左ペインの```設定```
3. 設定画面下部の```ビルド後の処理```にて```Checkstyle警告の集計```を選択し集計するファイルを入力
4. 設定画面下部の```ビルド後の処理```にて```FindBugs警告の集計```を選択し集計するファイルを入力
4. 以下の通り、入力し設定を保存

![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/e0c786ad-9c00-5a17-0c07-b7a735db0e9b.png)

### テスト結果の確認
テスト結果は以下の通りとなり、[［改訂第3版］Jenkins実践入門](https://gihyo.jp/book/2017/978-4-7741-8928-4)の内容とは異なる
書籍では、Checkstyleに6つの警告。FindBugsに1つの警告。

![スクリーンショット (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/a19a81ab-6d41-3a1e-a453-b073de68e6d4.png)


### テスト結果をもとにコードの修正
前回同様、書籍で修正されている箇所を一度正しい結果から間違いの結果に戻してもいいのだが、今回は未修正の箇所を自力で治してみる

1. Checkstyleの```5 warnings```をクリックし、警告内容の詳細を確認する
2. 以下の通り、2つのパッケージ内に警告がある（今回は警告内容が4つとも同じ、```jp.gihyo.jenkinsbook.dto```を修正）![スクリーンショット (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/97c4c416-8b33-25b8-3d61-0e18c0aa1ebf.png)
3. ```jp.gihyo.jenkinsbook.dto```をクリックし、該当ファイルを選択![スクリーンショット (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/05da6755-a7fd-171d-87d5-9ca12bc7c1cf.png)
4. ファイルを開くと、警告の箇所が分かりやすく着色してあり、どのような警告内容か教えてくれる![スクリーンショット (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/1621101d-4ba0-ed57-4b6b-37f280a6a96e.png)
5. 今回の警告内容は、class内で定義している変数名とそのclass内にあるメソッドで定義している変数名が一致していることが原因と判明.
6. メソッドでの変数名を変更し、前回同様にGitへpushを行う

```
$ vi cicd-workspace/sampleproject/src/main/java/jp/gihyo/jenkinsbook/dto/SampleDTO.java   //メソッドの変数名を変更
$ cd cicd-workspace/sampleproject/
$ git diff   //変更内容の確認
diff --git a/src/main/java/jp/gihyo/jenkinsbook/dto/SampleDTO.java b/src/main/java/jp/gihyo/jenkinsbook/dto/SampleDTO.java
index 80c1c01..a970612 100644
--- a/src/main/java/jp/gihyo/jenkinsbook/dto/SampleDTO.java
+++ b/src/main/java/jp/gihyo/jenkinsbook/dto/SampleDTO.java
@@ -24,9 +24,10 @@ public class SampleDTO implements Serializable {
      * @param firstName first name of the user
      * @param lastName last name of the user
      */
-    public SampleDTO(final String firstName, final String lastName) {
-        this.setFirstName(firstName);
-        this.setLastName(lastName);
+
+    public SampleDTO(final String fName, final String lName) {
+        this.setFirstName(fName);
+        this.setLastName(lName);
         this.setMessage("Hello");
     }

@@ -58,16 +59,16 @@ public class SampleDTO implements Serializable {
      * Set first name of the user.
      * @param firstName first name of the user
      */
-    public final void setFirstName(final String firstName) {
-        this.firstName = firstName;
+    public final void setFirstName(final String FName) {
+        this.firstName = FName;
     }

     /**
      * Set last name of the user.
      * @param lastName last name of the user
      */
-    public final void setLastName(final String lastName) {
-        this.lastName = lastName;
+    public final void setLastName(final String LName) {
+        this.lastName = LName;
$ git add src/main/java/jp/gihyo/jenkinsbook/dto/SampleDTO.java
$ git commit -m 'fixed name in SampleDTO.java ')
$ git push origin master
```

再度ビルドを実行すると、**エラー増えた、、、涙**
![スクリーンショット (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/e2a28861-b5cb-9414-ff05-3a24c651edd1.png)

でも、```4 fixed warnings```と先ほど修正した4箇所が即反映されていることが分かる
結果的にエラーは増えてしまったが、**coding->build->test->coding...**のサイクルを高速に回せることは実感

ホントはすべてのエラーを修正したいけど、今回は以上っっ（笑）