Inspecodeとは?
Inspecodeは、CodeClimateやSideCIのような静的コード解析サービスの一種です。ドキュメントにあるように、かなり多くの言語とツールに対応しているのが特徴です。あと静的コード解析と言いつつ、Go言語やJavascriptに関してはテストの実行もできちゃってます。
今回はGo言語を利用したレポジトリに対して、Inspecodeで静的コード解析+テスト実行をしてみます。
Disclaimer
僕はInspecodeの開発に関わっています。日本語のチュートリアルが全然ないので試しにQiitaに投稿してみました。
使用するレポジトリ
gitleaksという、gitに秘密情報をコミットしていないかチェックしてくれるツールのレポジトリを対象にしてみます。
手順
1. gitleaksのレポジトリをForkする
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言語では以下のツールが使えるので、必要に応じて追加してみて下さい。
3. InspecodeにSign in/up
こちらのページからSign in/upできます。GitHubアカウントが必要です。
4. gitleaksレポジトリを登録する
TopページからRepositories一覧ページを開いて、
gitleaksのレポジトリを登録します。
登録すると、自動で最初の解析ジョブが実行されます。
5. 解析ジョブを開く
Reports一覧ページを開いて、
Loadingアイコンを押します。
6. 解析ジョブの内容を確認する
以下のように、ツールごとに実行の成否が表示されます。go test
は成功、gofmt
、goimports
、golint
は失敗していることがわかります。
gofmt
などが失敗しているのは、ツールがIssueを指摘したためと考えられます。指摘したIssueをみるために、「View Report」ボタンを押します。
7. レポートを確認する
以下のような形式で解析結果を確認できます。
Issuesタブを開くと、ツールの指摘したIssuesが一覧できます。
gofmtやgoimportsがIssueを指摘しています。
解析ジョブの成否はGitHubにも自動的に反映されるので、Pull Requestから確認することもできます。
まとめ
Inspecodeを使って、Go言語を利用したレポジトリに対して静的コード解析+テスト実行をしてみました。最後に、今回は紹介できなかった機能を少し並べておきます。。
-
設定ファイル中の
ignore
で特定のディレクトリを解析対象から除外できる -
設定ファイル中の
runtime
でGoのバージョンを指定できる。まだ1.10対応されてないですが。。 - Issueを自動修正するPull Requestの発行。ツール一覧で
auto-fix
が付いているツールが対象です。設定方法は各ツールのドキュメントを見て下さい。