Creating a lint tool
with analysis
Go 1.12 Release Party in Tokyo
@knsh14
自己紹介
話すこと
何を作ったのか
循環複雑度とは
DEMO
analysis を使って解析ツールを作る
analysis ツールの作り方
パッケージ構成
gocc のパッケージ構成
リポジトリのトップレベルに Analyzer を置く
ロジックをサブディレクトリに置く
テスト
Analyzer のテストを作る
テストデータのサンプル
package complexity
func SimpleFunction(n int) {
println(n)
}
func ComplexFunction(n int) { // want `func ComplexFunction complexity=10`
if n == 0 {
println("zero")
}
Analyzer のテストするコード
package gocc
import (
"testing"
"golang.org/x/tools/go/analysis/analysistest"
)
func TestAnalyzer(t *testing.T) {
testdata := analysistest.TestData()
analysistest.Run(t, testdata, Analyzer, "foo")
}
テストデータを作るときの特徴
analysis を勉強する
いいドキュメント
実際にどの様に使われてるか知る
宣伝 1
宣伝2
まとめ