Skip to content

Commit

Permalink
feat: remove "verbose" verbosity level (#1686)
Browse files Browse the repository at this point in the history
We're only actually using this level in one place currently, and it is
not one of the log levels defined by `slog` by default - I also think
there's an argument to be made that "verbose" itself is something of a
mode rather than a level; i.e. it implies maybe all logs should be shown
regardless of their level, or debug, or some other combination.

Either way I think we should remove it as part of v2 while we can to
make things a bit simpler and we can introduce it back in a minor
version if/when we decide to use it.
  • Loading branch information
G-Rath authored Mar 3, 2025
1 parent caaabe2 commit 583531a
Show file tree
Hide file tree
Showing 22 changed files with 3 additions and 241 deletions.
1 change: 0 additions & 1 deletion .golangci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ linters-settings:
funcs:
- (github.com/google/osv-scanner/v2/pkg/reporter.Reporter).Errorf
- (github.com/google/osv-scanner/v2/pkg/reporter.Reporter).Warnf
- (github.com/google/osv-scanner/v2/pkg/reporter.Reporter).Verbosef
- (github.com/google/osv-scanner/v2/pkg/reporter.Reporter).Infof
depguard:
rules:
Expand Down
16 changes: 2 additions & 14 deletions cmd/osv-scanner/__snapshots__/main_test.snap
Original file line number Diff line number Diff line change
Expand Up @@ -477,19 +477,7 @@ Scanned <rootdir>/fixtures/config-invalid/composer.lock file and found 1 package
---

[Test_run/config_file_is_invalid - 2]
Ignored invalid config file at: <rootdir>/fixtures/config-invalid/osv-scanner.toml

---

[Test_run/config_file_is_invalid#01 - 1]
Scanning dir ./fixtures/config-invalid
Scanned <rootdir>/fixtures/config-invalid/composer.lock file and found 1 package
Config file <rootdir>/fixtures/config-invalid/osv-scanner.toml is invalid because: toml: line 1: expected '.' or '=', but got '!' instead

---

[Test_run/config_file_is_invalid#01 - 2]
Ignored invalid config file at: <rootdir>/fixtures/config-invalid/osv-scanner.toml
Ignored invalid config file at <rootdir>/fixtures/config-invalid/osv-scanner.toml because: toml: line 1: expected '.' or '=', but got '!' instead

---

Expand Down Expand Up @@ -956,7 +944,7 @@ No issues found
---

[Test_run/invalid_--verbosity_value - 2]
invalid verbosity level "unknown" - must be one of: error, warn, info, verbose
invalid verbosity level "unknown" - must be one of: error, warn, info

---

Expand Down
4 changes: 0 additions & 4 deletions cmd/osv-scanner/fix/output.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,6 @@ func (r *outputReporter) Infof(format string, a ...any) {
fmt.Fprintf(r.Stdout, format, a...)
}

func (r *outputReporter) Verbosef(format string, a ...any) {
fmt.Fprintf(r.Stdout, format, a...)
}

func (r *outputReporter) PrintResult(*models.VulnerabilityResults) error {
panic("not implemented")
}
Expand Down
5 changes: 0 additions & 5 deletions cmd/osv-scanner/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -265,11 +265,6 @@ func Test_run(t *testing.T) {
args: []string{"", "./fixtures/config-invalid"},
exit: 127,
},
{
name: "config file is invalid",
args: []string{"", "--verbosity", "verbose", "./fixtures/config-invalid"},
exit: 127,
},
// config file with unknown keys
{
name: "config files cannot have unknown keys",
Expand Down
3 changes: 1 addition & 2 deletions internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,7 @@ func (c *Manager) Get(r reporter.Reporter, targetPath string) Config {
} else {
// anything other than the config file not existing is most likely due to an invalid config file
if !errors.Is(configErr, os.ErrNotExist) {
r.Errorf("Ignored invalid config file at: %s\n", configPath)
r.Verbosef("Config file %s is invalid because: %v\n", configPath, configErr)
r.Errorf("Ignored invalid config file at %s because: %v\n", configPath, configErr)
}
// If config doesn't exist, use the default config
config = c.DefaultConfig
Expand Down
6 changes: 0 additions & 6 deletions pkg/reporter/cyclonedx.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,6 @@ func (r *CycloneDXReporter) Infof(format string, a ...any) {
}
}

func (r *CycloneDXReporter) Verbosef(format string, a ...any) {
if VerboseLevel <= r.level {
fmt.Fprintf(r.stderr, format, a...)
}
}

func (r *CycloneDXReporter) PrintResult(vulnerabilityResults *models.VulnerabilityResults) error {
errs := output.PrintCycloneDXResults(vulnerabilityResults, r.version, r.stdout)
if errs != nil {
Expand Down
42 changes: 0 additions & 42 deletions pkg/reporter/cyclonedx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,45 +88,3 @@ func TestCycloneDXReporter_Infof(t *testing.T) {
}
}
}

func TestCycloneDXReporter_Verbosef(t *testing.T) {
t.Parallel()
text := "hello world!"
tests := []struct {
version models.CycloneDXVersion
lvl reporter.VerbosityLevel
expectedPrintout string
}{
{
version: models.CycloneDXVersion14,
lvl: reporter.VerboseLevel,
expectedPrintout: text,
},
{
version: models.CycloneDXVersion15,
lvl: reporter.VerboseLevel,
expectedPrintout: text,
},
{
version: models.CycloneDXVersion14,
lvl: reporter.InfoLevel,
expectedPrintout: "",
},
{
version: models.CycloneDXVersion15,
lvl: reporter.InfoLevel,
expectedPrintout: "",
},
}

for _, tt := range tests {
writer := &bytes.Buffer{}
r := reporter.NewCycloneDXReporter(io.Discard, writer, tt.version, tt.lvl)

r.Verbosef("%s", text)

if writer.String() != tt.expectedPrintout {
t.Errorf("expected \"%s\", got \"%s\"", tt.expectedPrintout, writer.String())
}
}
}
6 changes: 0 additions & 6 deletions pkg/reporter/gh-annotations_reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,6 @@ func (r *GHAnnotationsReporter) Infof(format string, a ...any) {
}
}

func (r *GHAnnotationsReporter) Verbosef(format string, a ...any) {
if VerboseLevel <= r.level {
fmt.Fprintf(r.stderr, format, a...)
}
}

func (r *GHAnnotationsReporter) PrintResult(vulnResult *models.VulnerabilityResults) error {
return output.PrintGHAnnotationReport(vulnResult, r.stderr)
}
24 changes: 0 additions & 24 deletions pkg/reporter/gh-annotations_reporter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,27 +72,3 @@ func TestGHAnnotationsReporter_Infof(t *testing.T) {
}
}
}

func TestGHAnnotationsReporter_Verbosef(t *testing.T) {
t.Parallel()

text := "hello world!"
tests := []struct {
lvl reporter.VerbosityLevel
expectedPrintout string
}{
{lvl: reporter.VerboseLevel, expectedPrintout: text},
{lvl: reporter.InfoLevel, expectedPrintout: ""},
}

for _, test := range tests {
writer := &bytes.Buffer{}
r := reporter.NewGHAnnotationsReporter(io.Discard, writer, test.lvl)

r.Verbosef("%s", text)

if writer.String() != test.expectedPrintout {
t.Errorf("expected \"%s\", got \"%s\"", test.expectedPrintout, writer.String())
}
}
}
6 changes: 0 additions & 6 deletions pkg/reporter/html_reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,6 @@ func (r *HTMLReporter) Infof(format string, a ...any) {
}
}

func (r *HTMLReporter) Verbosef(format string, a ...any) {
if VerboseLevel <= r.level {
fmt.Fprintf(r.stderr, format, a...)
}
}

func (r *HTMLReporter) PrintResult(vulnResult *models.VulnerabilityResults) error {
return output.PrintHTMLResults(vulnResult, r.stdout)
}
6 changes: 0 additions & 6 deletions pkg/reporter/json_reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,6 @@ func (r *JSONReporter) Infof(format string, a ...any) {
}
}

func (r *JSONReporter) Verbosef(format string, a ...any) {
if VerboseLevel <= r.level {
fmt.Fprintf(r.stderr, format, a...)
}
}

func (r *JSONReporter) PrintResult(vulnResult *models.VulnerabilityResults) error {
return output.PrintJSONResults(vulnResult, r.stdout)
}
24 changes: 0 additions & 24 deletions pkg/reporter/json_reporter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,27 +72,3 @@ func TestJSONReporter_Infof(t *testing.T) {
}
}
}

func TestJSONReporter_Verbosef(t *testing.T) {
t.Parallel()

text := "hello world!"
tests := []struct {
lvl reporter.VerbosityLevel
expectedPrintout string
}{
{lvl: reporter.VerboseLevel, expectedPrintout: text},
{lvl: reporter.InfoLevel, expectedPrintout: ""},
}

for _, tt := range tests {
writer := &bytes.Buffer{}
r := reporter.NewJSONReporter(io.Discard, writer, tt.lvl)

r.Verbosef("%s", text)

if writer.String() != tt.expectedPrintout {
t.Errorf("expected \"%s\", got \"%s\"", tt.expectedPrintout, writer.String())
}
}
}
2 changes: 0 additions & 2 deletions pkg/reporter/reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ type Reporter interface {
Warnf(format string, a ...any)
// Infof prints text providing general information about what OSV-Scanner is doing during its runtime.
Infof(format string, a ...any)
// Verbosef prints text providing additional information about the inner workings of OSV-Scanner to the user.
Verbosef(format string, a ...any)
// PrintResult prints the models.VulnerabilityResults per the logic of the
// actual reporter
PrintResult(vulnResult *models.VulnerabilityResults) error
Expand Down
6 changes: 0 additions & 6 deletions pkg/reporter/sarif_reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,6 @@ func (r *SARIFReporter) Infof(format string, a ...any) {
}
}

func (r *SARIFReporter) Verbosef(format string, a ...any) {
if VerboseLevel <= r.level {
fmt.Fprintf(r.stderr, format, a...)
}
}

func (r *SARIFReporter) PrintResult(vulnResult *models.VulnerabilityResults) error {
return output.PrintSARIFReport(vulnResult, r.stdout)
}
24 changes: 0 additions & 24 deletions pkg/reporter/sarif_reporter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,27 +72,3 @@ func TestSarifReporter_Infof(t *testing.T) {
}
}
}

func TestSarifReporter_Verbosef(t *testing.T) {
t.Parallel()

text := "hello world!"
tests := []struct {
lvl reporter.VerbosityLevel
expectedPrintout string
}{
{lvl: reporter.VerboseLevel, expectedPrintout: text},
{lvl: reporter.InfoLevel, expectedPrintout: ""},
}

for _, tt := range tests {
writer := &bytes.Buffer{}
r := reporter.NewSarifReporter(io.Discard, writer, tt.lvl)

r.Verbosef("%s", text)

if writer.String() != tt.expectedPrintout {
t.Errorf("expected \"%s\", got \"%s\"", tt.expectedPrintout, writer.String())
}
}
}
6 changes: 0 additions & 6 deletions pkg/reporter/table_reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,6 @@ func (r *TableReporter) Infof(format string, a ...any) {
}
}

func (r *TableReporter) Verbosef(format string, a ...any) {
if VerboseLevel <= r.level {
fmt.Fprintf(r.stdout, format, a...)
}
}

func (r *TableReporter) PrintResult(vulnResult *models.VulnerabilityResults) error {
if len(vulnResult.Results) == 0 && vulnResult.LicenseSummary == nil && !r.hasErrored {
fmt.Fprintf(r.stdout, "No issues found\n")
Expand Down
24 changes: 0 additions & 24 deletions pkg/reporter/table_reporter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,27 +72,3 @@ func TestTableReporter_Infof(t *testing.T) {
}
}
}

func TestTableReporter_Verbosef(t *testing.T) {
t.Parallel()

text := "hello world!"
tests := []struct {
lvl reporter.VerbosityLevel
expectedPrintout string
}{
{lvl: reporter.VerboseLevel, expectedPrintout: text},
{lvl: reporter.InfoLevel, expectedPrintout: ""},
}

for _, tt := range tests {
writer := &bytes.Buffer{}
r := reporter.NewTableReporter(writer, io.Discard, tt.lvl, false, 0)

r.Verbosef("%s", text)

if writer.String() != tt.expectedPrintout {
t.Errorf("expected \"%s\", got \"%s\"", tt.expectedPrintout, writer.String())
}
}
}
5 changes: 0 additions & 5 deletions pkg/reporter/verbosity.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,12 @@ const (
WarnLevel
// InfoLevel is for general information about what OSV-Scanner is doing during its runtime.
InfoLevel
// VerboseLevel is for providing even more information compared to InfoLevel about the inner workings of OSV-Scanner.
VerboseLevel
)

var verbosityLevels = []string{
"error",
"warn",
"info",
"verbose",
}

func VerbosityLevels() []string {
Expand All @@ -38,8 +35,6 @@ func ParseVerbosityLevel(text string) (VerbosityLevel, error) {
return WarnLevel, nil
case "info":
return InfoLevel, nil
case "verbose":
return VerboseLevel, nil
default:
var l VerbosityLevel

Expand Down
1 change: 0 additions & 1 deletion pkg/reporter/verbosity_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ func TestParseVerbosityLevel_GivenValidLevels(t *testing.T) {
{input: "error", expectedLvl: reporter.ErrorLevel},
{input: "warn", expectedLvl: reporter.WarnLevel},
{input: "info", expectedLvl: reporter.InfoLevel},
{input: "verbose", expectedLvl: reporter.VerboseLevel},
}

for _, tt := range tests {
Expand Down
6 changes: 0 additions & 6 deletions pkg/reporter/vertical_reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,6 @@ func (r *VerticalReporter) Infof(format string, a ...any) {
}
}

func (r *VerticalReporter) Verbosef(format string, a ...any) {
if VerboseLevel <= r.level {
fmt.Fprintf(r.stdout, format, a...)
}
}

func (r *VerticalReporter) PrintResult(vulnResult *models.VulnerabilityResults) error {
if len(vulnResult.Results) == 0 && vulnResult.LicenseSummary == nil && !r.hasErrored {
fmt.Fprintf(r.stdout, "No issues found\n")
Expand Down
24 changes: 0 additions & 24 deletions pkg/reporter/vertical_reporter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,27 +72,3 @@ func TestVerticalReporter_Infof(t *testing.T) {
}
}
}

func TestVerticalReporter_Verbosef(t *testing.T) {
t.Parallel()

text := "hello world!"
tests := []struct {
lvl reporter.VerbosityLevel
expectedPrintout string
}{
{lvl: reporter.VerboseLevel, expectedPrintout: text},
{lvl: reporter.InfoLevel, expectedPrintout: ""},
}

for _, test := range tests {
writer := &bytes.Buffer{}
r := reporter.NewVerticalReporter(writer, io.Discard, test.lvl, false, 0)

r.Verbosef("%s", text)

if writer.String() != test.expectedPrintout {
t.Errorf("expected \"%s\", got \"%s\"", test.expectedPrintout, writer.String())
}
}
}
3 changes: 0 additions & 3 deletions pkg/reporter/void_reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ func (r *VoidReporter) Warnf(_ string, _ ...any) {
func (r *VoidReporter) Infof(_ string, _ ...any) {
}

func (r *VoidReporter) Verbosef(_ string, _ ...any) {
}

func (r *VoidReporter) PrintResult(_ *models.VulnerabilityResults) error {
return nil
}

0 comments on commit 583531a

Please sign in to comment.