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

Enablement Bootcamp for Gopherizing 発表会資料

Avatar for kashiwa kashiwa
October 12, 2023
85

Enablement Bootcamp for Gopherizing 発表会資料

Avatar for kashiwa

kashiwa

October 12, 2023
Tweet

Transcript

  1. Bootcampに参加してから行ったsplitコマンドの改善 • 標準入力への対応 ◦ 同じグループの方に interfaceが一緒で実装が簡単と教えてもらえた • CLI用のstructを作成することでテスタブルなコードに変更 ◦ Goで書くテスタブルなCLIツールの作り方

    を参考に実装 ◦ flagを使っていたのでCLIのテストは書けなかった ...(helpを表示するときにos.Exit(0)が直接呼び出 される) • リファクタリング ◦ 詳細は次ページ以降
  2. リファクタリング • リファクタリングポイントを見つける ◦ tenntenn/tennvetを使用 ◦ 実行例: $ go vet

    -vettool=`which tennvet` ./... # split ./main.go:121:11: unnecessary else ./main.go:155:11: unnecessary else ./main.go:194:11: unnecessary else ./main.go:293:9: unnecessary else ./main.go:130:3: defer should not use in a loop ./main.go:203:3: defer should not use in a loop ./main_test.go:159:5: defer should not use in a loop
  3. (おまけ)GitHub Actionsでリファクタリング漏れを防ぐ name: Static Analysis
 on:
 push:
 branches:
 - "feature/**"


    jobs:
 static-analysis:
 runs-on: ubuntu-latest
 steps:
 - name: Checkout code
 uses: actions/checkout@v3
 - name: Set up Go 1.21
 uses: actions/setup-go@v3
 with:
 go-version: 1.21
 - name: Install Funcstat
 run: go install github.com/gostaticanalysis/funcstat/cmd/funcstat@latest
 - name: Run Funcstat
 run: funcstat ./...
 - name: Install tennvet
 run: go install github.com/tenntenn/tennvet@latest
 - name: Run tennvet by go vet
 run: go vet -vettool=`which tennvet` ./...