Upgrade to Pro — share decks privately, control downloads, hide ads and more …

linter for your team rule

mizkei
November 09, 2018

linter for your team rule

mizkei

November 09, 2018
Tweet

More Decks by mizkei

Other Decks in Programming

Transcript

  1. 目次 • 自己紹介 • golint • チームで取り入れたいルール • テストのために取り入れたいルール •

    パッケージの役割を分けるために取り入れたいルール • ルールをチームで共有する方法 • ルール表現のために作成したツール「self-lint」 • まとめ
  2. 自己紹介 • 名前 ◦ 水野 敬太 • github ◦ mizkei

    • twitter ◦ @mizkei11 • 仕事 ◦ Backend/マイクロサービス開発
  3. golintによるコーディングスタイルの指摘 • Effective Go や Go Code Review Comments に基づいた指摘

    ◦ 不要なelse ◦ コメントのフォーマット ◦ context.WithValueのkeyの型 ◦ 変数・パッケージ名 ◦ import Dot ◦ main以外でのblank import ◦ ...
  4. 特定パッケージのimport制限 • Assertなどを提供する外部パッケージ ◦ Why does Go not have assertions?

    • プロジェクトにおけるテスト用パッケージ ◦ e.g. githoge.com/project/root/test ◦ テスト用のデータを用意するための便利メソッド群 ▪ 複数パッケージのテストで参照されるために一つのパッケージとして作成
  5. self-lint • https://github.com/mizkei/self-lint • チームでの禁止事項(ローカルルール)をチェックするためのツール ◦ 特定importのチェック ◦ 特定packageのメソッドや変数への参照 ◦

    panicなどのbuiltin functionの使用 • CIを利用した自動チェック ◦ golintと同じ出力形式であるため、reviewdogが食べてくれる
  6. self-lintの設定 • target ◦ 対象のパッケージ ▪ globalは全てのパッケージ • import ◦

    禁止したいパッケージを書く • ref ◦ 禁止したいパッケージの値を書く • write ◦ 禁止したいbuiltin functionを書く ▪ panic, if, switch, or for