Drop the stray em-dash (envreads) and arrow (reinvented) separators so all findings use the two canonical shapes: "file:line snippet" and "file:line [rule] detail". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package main
|
|
|
|
func init() {
|
|
register(Check{
|
|
Seq: 120,
|
|
ID: "12",
|
|
Title: "No reinvented utilities (use helpers)",
|
|
Run: func(ctx *ScanContext, rep *Reporter) {
|
|
var beReinvented []reinventedViolation
|
|
for _, target := range ctx.backendTargets {
|
|
for _, v := range checkReinventedBackend(target.root) {
|
|
v.file = prefixDisplayPath(target.display, v.file)
|
|
beReinvented = append(beReinvented, v)
|
|
}
|
|
}
|
|
for _, target := range ctx.pluginTargets {
|
|
for _, v := range checkReinventedBackend(target.root) {
|
|
v.file = prefixDisplayPath(target.display, v.file)
|
|
beReinvented = append(beReinvented, v)
|
|
}
|
|
}
|
|
var feReinvented []reinventedViolation
|
|
for _, target := range ctx.frontendTargets {
|
|
for _, v := range checkReinventedFrontend(target.dir) {
|
|
v.file = prefixDisplayPath(target.label, v.file)
|
|
feReinvented = append(feReinvented, v)
|
|
}
|
|
}
|
|
allReinvented := append(beReinvented, feReinvented...)
|
|
if len(allReinvented) > 0 {
|
|
rep.Fail("%d reinvented utility pattern(s)", len(allReinvented))
|
|
for _, v := range allReinvented {
|
|
rep.Findingf("%s:%d [%s] %s", v.file, v.line, v.rule, v.hint)
|
|
}
|
|
} else {
|
|
rep.OK("No reinvented utilities detected")
|
|
}
|
|
},
|
|
})
|
|
}
|