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

チームで運用する golangci-lint の向き合い方

チームで運用する golangci-lint の向き合い方

LTで発表しきれなかったスライドが含まれています。
(20分以上いってしまうくらい、まだ喋れます....)

Sugar Sato

June 14, 2024
Tweet

More Decks by Sugar Sato

Other Decks in Programming

Transcript

  1. 自己紹介 Sugar Sato (@satoIsSugar) • 2023年 BuySell Technologies 入社 •

    基盤チーム所属 (Portal/Account) PjM • Go / Angular / Serverless ◦ Go歴: 4年くらい • 熱帯植物 ◦ ビカクシダ • 猫 ◦ Lambda (♀ 2才)
  2. プロダクト群「バイセルリユースプラットフォーム Cosmos」の開発が進行中 リユースに必要なすべての機能を提供する 「リユースプラットフォーム Cosmos」の開発が進行中です。 Cosmosを活用して、バイセルグループ全体での業務効率改善やデータドリブン経営の深化を目指しています。 リユースプラットフォーム Cosmos 自社開発のリユース特化業務基幹システムでありサービス群の集合体 買取申込

    買取・査定 在庫管理 販売 多様なチャネルで収益最大化 CRM -顧客対応- 買取種別に応じた最適なシステム構築 Visit -訪問買取 - Store -店舗買取 - Promas -商材マスタ - Appraisal -専門査定 - Stock -在庫管理 - EXS -販売管理 - Core -会員管理- Portal -データ利用- Pocket -データ基盤- 買取 専門チームによる真贋・査定と連携 査定 申込 効率的な顧客対応 在庫 在庫管理の最適・効率化 販売 データ 各事業プロセスにある データを一元管理 :基幹システム
  3. • 5つの設定 ◦ run (解析時の設定) ◦ output (解析結果の出力設定) ◦ linters

    (lintの設定) ▪ linters-settings ◦ issues (除外設定) ◦ severity (issue 重大度設定) 設定ファイル( .golangci.yml )について
  4. issues configuration • exclude-rules • exclude-files • exclude-dirs • exclude

    • exclude-use-default • exclude-generated • etc…
  5. golangci-lint コントリビュータ • sanposhiho さん • sivchari さん • karamaru-alpha

    さん ◦ Goconf 2024 で copyloopvar 等について登壇! ▪ めっちゃ良かった....(小並) • etc…
  6. • 基本的に disable-all で運用 ◦ 保守的な運用 ◦ デフォルトのルールは全て適用す る ◦

    メリット ▪ 気軽に golangci-lint のバー ジョン挙げられる ◦ デメリット ▪ 考慮漏れが発生するかも linters の運用方法
  7. • enable の中でも Must と Should に分 けてルールを適用している ◦ Must

    ▪ golangci-lint のデフォルト true のオプション ◦ Should ▪ 自分たちとしてコード品質を保 つためのオプション linters の運用方法
  8. • lll • gocyclo • goconst • nestif • tagliatelle

    enable に採用しているルール
  9. • lll • gocyclo • goconst • nestif • tagliatelle

    enable に採用しているルール
  10. • 自分のチームでは ◦ line-length: 140文字 ▪ 公式の推奨に合わせている ▪ デフォルト120文字 ◦

    tab-width: 2 • ignore 設定はテストでも適用しない ◦ 可読性を担保する ◦ コードレビューの負担を減らす lll
  11. • lll • gocyclo • goconst • nestif • tagliatelle

    enable に採用しているルール
  12. • 読み方:タリアテッレ • タグ名の制御 ◦ field 名と一致させている ◦ json から

    envconfig まで対応して いる ▪ https://golangci-lint.run/usa ge/linters/#tagliatelle tagliatelle
  13. • レビューの工数を ”少し” でも減らせる ◦ PR で「わざわざコメントするほどではないか」をなくせる ▪ 心理的負担を減らせる ◦

    記述が統一されやすくなり可読性向上がみこめる ◦ Go を初めて書くメンバーも「記述が、ぶれにくくて良い」との声も 上がる golangci-lint のメリット