5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go言語利用のレポジトリをInspecodeで静的解析+テストしてみる

Posted at

Inspecodeとは?

Inspecodeは、CodeClimateやSideCIのような静的コード解析サービスの一種です。ドキュメントにあるように、かなり多くの言語とツールに対応しているのが特徴です。あと静的コード解析と言いつつ、Go言語やJavascriptに関してはテストの実行もできちゃってます。

今回はGo言語を利用したレポジトリに対して、Inspecodeで静的コード解析+テスト実行をしてみます。

Disclaimer

僕はInspecodeの開発に関わっています。日本語のチュートリアルが全然ないので試しにQiitaに投稿してみました。

使用するレポジトリ

gitleaksという、gitに秘密情報をコミットしていないかチェックしてくれるツールのレポジトリを対象にしてみます。

手順

1. gitleaksのレポジトリをForkする

Screen Shot 2018-03-08 at 23.16.48.png

Organization配下にForkすると後で面倒なので、個人アカウント配下にForkするのがおすすめです。。

2. 設定ファイルを追加する

以下の設定ファイルをrocro.ymlという名前でgitレポジトリ直下に追加します。設定ファイルなしでもある程度は動くのですが、今回はテストも実行したいのであらかじめ作っておきます。

inspecode:
  gofmt:
    thresholds:
      num-issues: 0
  golint:
    thresholds:
      num-issues: 0
  goimports:
    thresholds:
      num-issues: 0
  go-test:
    thresholds:
      num-issues: 0

使用したいツールと、解析ジョブを失敗とみなすIssues数のしきい値を指定しています。例えば今回の設定だと、いずれかのツールが一つでもIssueを指摘したら、ジョブ失敗とします。

他にもGo言語では以下のツールが使えるので、必要に応じて追加してみて下さい。

Screen Shot 2018-03-08 at 23.39.27.png

3. InspecodeにSign in/up

こちらのページからSign in/upできます。GitHubアカウントが必要です。

4. gitleaksレポジトリを登録する

TopページからRepositories一覧ページを開いて、

Screen Shot 2018-03-08 at 23.26.17.png

gitleaksのレポジトリを登録します。

Screen Shot 2018-03-08 at 23.28.20.png

登録すると、自動で最初の解析ジョブが実行されます。

5. 解析ジョブを開く

Reports一覧ページを開いて、

Screen Shot 2018-03-08 at 23.30.05.png

Loadingアイコンを押します。

Screen Shot 2018-03-09 at 12.00.11.png

6. 解析ジョブの内容を確認する

以下のように、ツールごとに実行の成否が表示されます。go testは成功、gofmtgoimportsgolintは失敗していることがわかります。

Screen Shot 2018-03-09 at 12.03.05.png

gofmtなどが失敗しているのは、ツールがIssueを指摘したためと考えられます。指摘したIssueをみるために、「View Report」ボタンを押します。

Screen Shot 2018-03-09 at 12.06.21.png

7. レポートを確認する

以下のような形式で解析結果を確認できます。

Screen Shot 2018-03-09 at 12.08.09.png

Issuesタブを開くと、ツールの指摘したIssuesが一覧できます。

gofmtやgoimportsがIssueを指摘しています。

解析ジョブの成否はGitHubにも自動的に反映されるので、Pull Requestから確認することもできます。

まとめ

Inspecodeを使って、Go言語を利用したレポジトリに対して静的コード解析+テスト実行をしてみました。最後に、今回は紹介できなかった機能を少し並べておきます。。

  • 設定ファイル中のignoreで特定のディレクトリを解析対象から除外できる
  • 設定ファイル中のruntimeでGoのバージョンを指定できる。まだ1.10対応されてないですが。。
  • Issueを自動修正するPull Requestの発行。ツール一覧auto-fixが付いているツールが対象です。設定方法は各ツールのドキュメントを見て下さい。
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?