diff --git a/analysis.go b/analysis.go index fccc180..6f2a65b 100644 --- a/analysis.go +++ b/analysis.go @@ -189,7 +189,7 @@ func (a *analyzer) checkFile(pass *analysis.Pass, file *ast.File) error { return fmt.Errorf("create %s header: %w", filename, err) } pass.Report(analysis.Diagnostic{ - Pos: file.FileStart, + Pos: file.Package, Category: analyzerName, Message: "missing license header", SuggestedFixes: []analysis.SuggestedFix{{ diff --git a/analysis_test.go b/analysis_test.go index 2ec6a0c..e84f417 100644 --- a/analysis_test.go +++ b/analysis_test.go @@ -54,6 +54,13 @@ func TestAnalyzer(t *testing.T) { t.Fatalf("NewAnalyzer() err = %v", err) } + // Test with sources containing build directives. + t.Run("builddirective", func(t *testing.T) { + t.Parallel() + packageDir := filepath.Join(analysistest.TestData(), "src/builddirective/") + _ = analysistest.Run(t, packageDir, a) + }) + // Different header contains a file with a different license header. // This license header should stay as-is and should not be modified. t.Run("differentheader", func(t *testing.T) { diff --git a/testdata/src/builddirective/main.go b/testdata/src/builddirective/main.go new file mode 100644 index 0000000..b70b5d6 --- /dev/null +++ b/testdata/src/builddirective/main.go @@ -0,0 +1,3 @@ +//go:build !foo + +package main // want "missing license header" diff --git a/testdata/src/builddirective/main.go.golden b/testdata/src/builddirective/main.go.golden new file mode 100644 index 0000000..43a7933 --- /dev/null +++ b/testdata/src/builddirective/main.go.golden @@ -0,0 +1,5 @@ +// Copyright (c) 2025 Test + +//go:build !foo + +package main // want "missing license header" diff --git a/testdata/src/packagecomment/main.go b/testdata/src/packagecomment/main.go index 2d0515d..7b82bee 100644 --- a/testdata/src/packagecomment/main.go +++ b/testdata/src/packagecomment/main.go @@ -1,3 +1,3 @@ -// Package packagecomment has a package-level doc comment. This comment should // want "missing license header" +// Package packagecomment has a package-level doc comment. This comment should // not affect the generation of a license header above it. -package packagecomment +package packagecomment // want "missing license header" diff --git a/testdata/src/packagecomment/main.go.golden b/testdata/src/packagecomment/main.go.golden index 9fb8e10..f98001f 100644 --- a/testdata/src/packagecomment/main.go.golden +++ b/testdata/src/packagecomment/main.go.golden @@ -1,5 +1,5 @@ // Copyright (c) 2025 Test -// Package packagecomment has a package-level doc comment. This comment should // want "missing license header" +// Package packagecomment has a package-level doc comment. This comment should // not affect the generation of a license header above it. -package packagecomment +package packagecomment // want "missing license header"