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

linter for your team rule

Avatar for mizkei mizkei
November 09, 2018

linter for your team rule

Avatar for mizkei

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