Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Analyzer = &analysis.Analyzer{ Name: "testalign", Doc: "テスト関数の順序がソースコードの宣言順序と一致しているかを検証する", Run: run, FactTypes: []analysis.Fact{ (*SourceOrderFact)(nil), }, }
Analyzer はテスト関数の順序がソースコードの宣言順序と一致しているかを検証する。
Functions ¶
func SourceFileForTest ¶
SourceFileForTest はテストファイルに対応するソースファイル名を返す。 例: "foo_test.go" → "foo.go"
Types ¶
type MatchResult ¶
type MatchResult struct {
TestFunc TestFunc
SourceFunc *SourceFunc // nilの場合は対応するソース関数なし
}
MatchResult はテスト関数とソース関数の対応を表す。
func MatchTestFuncs ¶
func MatchTestFuncs(testFuncs []TestFunc, sourceFuncs []SourceFunc) []MatchResult
MatchTestFuncs はテスト関数をソース関数にマッチングする。 マッチングルール(優先度順): 1. 完全一致: TargetName == QualifiedName 2. サブテストマッチ: TargetNameがQualifiedName + "_"で始まる最長一致 3. マッチなしの場合はSourceFuncがnilのMatchResultを返す
type OrderViolation ¶
type OrderViolation struct {
TestFunc TestFunc // 順序違反のテスト関数
SourceFunc SourceFunc // 対応するソース関数
PrecedingTest *MatchResult // ソース順序的に後にあるべきテスト関数
}
OrderViolation は順序違反の情報を表す。
func DetectOrderViolations ¶
func DetectOrderViolations(matches []MatchResult, sourceFuncs []SourceFunc) []OrderViolation
DetectOrderViolations はマッチ済みテスト関数の順序がソース関数の宣言順序と 一致しているかを検証し、違反箇所を返す。
ソース関数のインデックス列が単調非減少であることを検証する。 違反箇所: ソースインデックスがそれまでの最大値より小さい位置。
type SourceFunc ¶
type SourceFunc struct {
Name string // 関数名
ReceiverType string // レシーバー型名(関数の場合は空)
Pos token.Pos // 宣言位置
FileName string // ファイル名
}
SourceFunc はソースファイル内の関数またはメソッド宣言を表す。
func ExtractSourceFuncs ¶
func ExtractSourceFuncs(file *ast.File, fset *token.FileSet) []SourceFunc
ExtractSourceFuncs はASTファイルからソース関数/メソッドを抽出する。 init関数は除外される。
func (SourceFunc) QualifiedName ¶
func (sf SourceFunc) QualifiedName() string
QualifiedName はレシーバー型を含む修飾名を返す。 メソッドの場合は "ReceiverType_Name"、関数の場合は "Name" を返す。 非公開関数の場合は "_name" の形式を返す。
type SourceOrderFact ¶
type SourceOrderFact struct {
FileToFuncs map[string][]SourceFunc
}
SourceOrderFact は外部テストパッケージ用のFactとしてエクスポートされる。 ソースファイルごとの関数一覧を保持する。
func (*SourceOrderFact) AFact ¶
func (*SourceOrderFact) AFact()
func (*SourceOrderFact) String ¶
func (*SourceOrderFact) String() string
type TestFunc ¶
type TestFunc struct {
Name string // テスト関数名(例: "TestService_Create")
Pos token.Pos // 宣言位置
FileName string // ファイル名
}
TestFunc はテストファイル内のテスト関数宣言を表す。
func ExtractTestFuncs ¶
ExtractTestFuncs はASTファイルからテスト関数を抽出する。 Test*/Benchmark*/Fuzz*/Example* プレフィックスの関数のみ抽出する。
func (TestFunc) TargetName ¶
TargetName はテストプレフィックス(Test/Benchmark/Fuzz/Example)を除去した名前を返す。