• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

protofire / solhint / #143847

09 May 2026 04:07PM UTC coverage: 92.035% (-5.8%) from 97.831%
#143847

push

400 of 483 branches covered (82.82%)

1063 of 1155 relevant lines covered (92.03%)

117.56 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.31
/../lib/reporter.js
1
const CommentDirectiveParser = require('./comment-directive-parser')
1✔
2

3
class Reporter {
4
  constructor(tokens, config) {
5
    this.commentDirectiveParser = new CommentDirectiveParser(tokens)
198✔
6
    this.reports = []
198✔
7
    this.config = config.rules || {}
198!
8
  }
9

10
  addReport(line, column, severity, message, ruleId, fix) {
11
    this.reports.push({ line, column, severity, message, ruleId, fix })
99✔
12
  }
13

14
  addMessage(loc, defaultSeverity, message, ruleId, fix) {
15
    this.addMessageExplicitLine(
107✔
16
      loc.start.line,
17
      loc.start.column,
18
      defaultSeverity,
19
      message,
20
      ruleId,
21
      fix,
22
    )
23
  }
24

25
  addMessageExplicitLine(line, column, defaultSeverity, message, ruleId, fix) {
26
    const configSeverity = this.severityOf(ruleId)
107✔
27

28
    if (this.config[ruleId] !== false && this.commentDirectiveParser.isRuleEnabled(line, ruleId)) {
107✔
29
      this.addReport(line, column + 1, configSeverity || defaultSeverity, message, ruleId, fix)
99!
30
    }
31
  }
32

33
  error(ctx, ruleId, message, fix) {
34
    this.addMessage(ctx.loc, Reporter.SEVERITY.ERROR, message, ruleId, fix)
61✔
35
  }
36

37
  warn(ctx, ruleId, message, fix) {
38
    this.addMessage(ctx.loc, Reporter.SEVERITY.WARN, message, ruleId, fix)
45✔
39
  }
40

41
  errorAt(line, column, ruleId, message) {
42
    this.addMessageExplicitLine(line, column, Reporter.SEVERITY.ERROR, message, ruleId)
×
43
  }
44

45
  severityOf(ruleId) {
46
    const ruleConfig = this.config[ruleId]
107✔
47
    let curSeverity
48

49
    if (ruleConfig && ruleConfig instanceof Array) {
107✔
50
      curSeverity = ruleConfig[0]
28✔
51
    } else if (ruleConfig) {
79!
52
      curSeverity = ruleConfig
79✔
53
    } else {
54
      return null
×
55
    }
56

57
    return Reporter.SEVERITY[curSeverity.toUpperCase()]
107✔
58
  }
59

60
  get errorCount() {
61
    return this._countReportsWith(Reporter.SEVERITY.ERROR)
135✔
62
  }
63

64
  get warningCount() {
65
    return this._countReportsWith(Reporter.SEVERITY.WARN)
70✔
66
  }
67

68
  _countReportsWith(severity) {
69
    return this.reports.filter((i) => i.severity === severity).length
205✔
70
  }
71

72
  get messages() {
73
    return this.reports.sort((x1, x2) => x1.line - x2.line)
174✔
74
  }
75

76
  get filePath() {
77
    return this.file
1✔
78
  }
79
}
80

81
Reporter.SEVERITY = Object.freeze({ ERROR: 2, WARN: 3 })
1✔
82

83
module.exports = Reporter
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc