From 1d68cb15f126e29e394d4317305cab9f89140e9a Mon Sep 17 00:00:00 2001 From: Joshua Sing Date: Sun, 20 Apr 2025 04:35:40 +1000 Subject: [PATCH 1/2] analysis: create missing diagnostic on package pos --- analysis.go | 2 +- testdata/src/packagecomment/main.go | 4 ++-- testdata/src/packagecomment/main.go.golden | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) 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/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" From b515fa7523e0ca729926f8d2939f803c90b7993c Mon Sep 17 00:00:00 2001 From: Joshua Sing Date: Sun, 20 Apr 2025 04:36:25 +1000 Subject: [PATCH 2/2] analysis: add test with build directive --- analysis_test.go | 7 +++++++ testdata/src/builddirective/main.go | 3 +++ testdata/src/builddirective/main.go.golden | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 testdata/src/builddirective/main.go create mode 100644 testdata/src/builddirective/main.go.golden 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"