< Summary - go-semantic-release Coverage

Line coverage
100%
Covered lines: 17
Uncovered lines: 0
Coverable lines: 17
Total lines: 58
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Name0%00100%
VerifyRelease0%00100%

File(s)

/home/runner/work/go-semantic-release/go-semantic-release/internal/adapters/plugins/lint_plugin.go

#LineLine coverage
 1package plugins
 2
 3import (
 4  "context"
 5  "fmt"
 6  "strings"
 7
 8  "github.com/jedi-knights/go-semantic-release/internal/domain"
 9  "github.com/jedi-knights/go-semantic-release/internal/ports"
 10)
 11
 12// Compile-time interface compliance checks.
 13var (
 14  _ ports.Plugin              = (*LintPlugin)(nil)
 15  _ ports.VerifyReleasePlugin = (*LintPlugin)(nil)
 16)
 17
 18// LintPlugin implements VerifyReleasePlugin by linting commit messages.
 19type LintPlugin struct {
 20  linter ports.CommitLinter
 21  logger ports.Logger
 22}
 23
 24// NewLintPlugin creates a commit linting plugin.
 25func NewLintPlugin(linter ports.CommitLinter, logger ports.Logger) *LintPlugin {
 26  return &LintPlugin{linter: linter, logger: logger}
 27}
 28
 129func (p *LintPlugin) Name() string { return "commit-lint" }
 30
 31// VerifyRelease lints all commits and returns an error if any have error-severity violations.
 532func (p *LintPlugin) VerifyRelease(_ context.Context, rc *domain.ReleaseContext) error {
 533  var allErrors []string
 534
 535  for i := range rc.Commits {
 536    violations := p.linter.Lint(rc.Commits[i])
 337    for _, v := range violations {
 338      msg := fmt.Sprintf("%s (%s): %s [%s]", rc.Commits[i].Hash[:minInt(7, len(rc.Commits[i].Hash))], v.Severity, v.Mess
 239      if v.Severity == domain.LintError {
 240        allErrors = append(allErrors, msg)
 141      } else {
 142        p.logger.Warn("lint warning", "commit", rc.Commits[i].Hash, "rule", v.Rule, "message", v.Message)
 143      }
 44    }
 45  }
 46
 247  if len(allErrors) > 0 {
 248    return fmt.Errorf("commit lint errors:\n  %s", strings.Join(allErrors, "\n  "))
 249  }
 350  return nil
 51}
 52
 53func minInt(a, b int) int {
 54  if a < b {
 55    return a
 56  }
 57  return b
 58}

Methods/Properties

Name
VerifyRelease