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

Enablement Bootcamp for Gopherizing 発表会資料

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for kashiwa kashiwa
October 12, 2023
100

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` ./...