GolangCI でコード・レビューを自動化する

以前「golangci-lint に叱られる」で

GolangCI も気になるが,それはまたいつか

と書いたが,今回はその話。

GolangCIGitHub と連携して機能するコード・レビュー・サービスで, GitHub 上のリポジトリにある Go 言語コードに lint をかけて結果を報告してくれる。 Pull request とも連携してレビュー結果を上げてくれるので,レビューにかかる労力をかなり引き下げることができる1

サインアップは GitHub アカウントで行うことができる。 サインアップに成功したらリポジトリ一覧画面に行けるようになる2

連携したいリポジトリに [Connect] するとレビューを開始するのだが,レビュー結果が表示されるまで結構時間がかかるみたい。 実は随分前に GolangCI に登録していくつかのパッケージと連携させていたのだが,なかなか処理が終わらないので,そのまま綺麗サッパリ忘れ去っていたのだった(笑)

レビューが終わったリポジトリの [Report] を開くとこんな感じの画面になる。 これは問題がなかったリポジトリの場合:

こっちは問題が発見されたリポジトリ:

このレポート結果を基にコードを修正する。 当然ながら master ブランチ上で作業をしないこと。

修正を commit & push し,修正を行ったブランチから pull request をかける。 GitHub 側は pull request したコードに対して連携しているサービスを呼び出して事前チェックを行う。 チェックにパスすればこんな感じになる。

問題があれば “Details” で問題箇所が示されるので,修正を行って再度 commit & push する。

GolangCI にはコマンドライン・ツールも用意されていて IDE やテキストエディタなどとも連携可能なのだが3,どうしても見落としがあるみたいで,リポジトリ全体をチェックしてくれるレビュー・サービスの存在はありがたい。

さて,他のパッケージも修正するか。

ブックマーク

参考図書

photo
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
丸善出版 2016-06-20
単行本(ソフトカバー)
4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
評価     

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2016-07-13 (powered by PA-APIv5)

photo
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド
MISRA‐C研究会 (編集)
日本規格協会 2006-10-01
単行本
4542503461 (ASIN), 9784542503465 (EAN), 4542503461 (ISBN)
評価     

私が持っているのはこれよりひとつ古い版だが,まぁいいか。むかし,車載用の組み込みエンジニアをやっていた頃は必読書として読まされました。今はもっと包括的な内容のものがあるはず。

reviewed by Spiegel on 2019-02-06 (powered by PA-APIv5)


  1. とはいえ GolangCI がチェックしてくれるのは lint レベルのコード・チェックなので,ビジネスロジック等の妥当性は人間が判断する必要がある。言い方を変えれば GolangCI で lint レベルのチェックを事前に行っておけば,人間はビジネスロジック等のチェックに専念することができる。 ↩︎

  2. 既定では公開リポジトリのみが対象となる。お金を払えばプライベート・リポジトリもチェックできるらしいが試していない。 ↩︎

  3. ATOM エディタの場合は go-plus パッケージで Linter に golangci-lint を指定できる。 ↩︎