all repos

clerk @ 23d0a0ddf451ff6ac76c6dd2ffda2cd7d4fe34fc

missing tooling for ledger/hledger

clerk/internal/linter/rule_unused_tag.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
feat: config (#6), 1 month ago
1
package linter
2
3
import (
4
	"fmt"
5
6
	"olexsmir.xyz/clerk/internal/analyzer"
7
)
8
9
const UnusedTagID RuleID = "unused-tag"
10
11
// UnusedTag flags declared tags that are not used.
12
type UnusedTag struct{}
13
14
func (UnusedTag) ID() RuleID { return UnusedTagID }
15
func (u *UnusedTag) CheckJournal(an *analyzer.Analysis) []Find {
16
	var finds []Find
17
	for name, info := range an.Tags {
18
		if len(info.Directives) == 0 {
19
			continue
20
		}
21
		if len(info.Usage) > 0 {
22
			continue
23
		}
24
		for _, d := range info.Directives {
25
			finds = append(finds, Find{
26
				Code:    u.ID(),
27
				Span:    d.Span,
28
				Message: fmt.Sprintf("unused tag: %s", name),
29
			})
30
		}
31
	}
32
	return finds
33
}