MCPcopy Create free account
hub / github.com/code-pushup/cli / stylishFormatter

Function stylishFormatter

tools/eslint-formatter-multi/src/lib/stylish.ts:31–129  ·  view source on GitHub ↗
(results: ESLint.LintResult[])

Source from the content-addressed store, hash-verified

29
30// eslint-disable-next-line max-lines-per-function
31export function stylishFormatter(results: ESLint.LintResult[]): string {
32 // eslint-disable-next-line functional/no-let
33 let output = '\n',
34 errorCount = 0,
35 warningCount = 0,
36 fixableErrorCount = 0,
37 fixableWarningCount = 0,
38 summaryColor = 'yellow';
39
40 results.forEach(result => {
41 const messages = result.messages;
42
43 if (messages.length === 0) {
44 return;
45 }
46
47 errorCount += result.errorCount;
48 warningCount += result.warningCount;
49 fixableErrorCount += result.fixableErrorCount;
50 fixableWarningCount += result.fixableWarningCount;
51
52 output += `${ansis.underline(result.filePath)}\n`;
53
54 output += `${textTable(
55 messages.map(message => {
56 // eslint-disable-next-line functional/no-let
57 let messageType;
58
59 if (message.fatal || message.severity === 2) {
60 messageType = ansis.red('error');
61 summaryColor = 'red';
62 } else {
63 messageType = ansis.yellow('warning');
64 }
65
66 return [
67 '',
68 String(message.line || 0),
69 String(message.column || 0),
70 messageType,
71 message.message.replace(/([^ ])\.$/u, '$1'),
72 ansis.dim(message.ruleId || ''),
73 ];
74 }),
75 {
76 align: ['', 'r', 'l'],
77 stringLength(str: string) {
78 return stripVTControlCharacters(str).length;
79 },
80 },
81 )
82 .split('\n')
83 .map(el =>
84 el.replace(/(\d+)\s+(\d+)/u, (m, p1, p2) => ansis.dim(`${p1}:${p2}`)),
85 )
86 .join('\n')}\n\n`;
87 });
88

Callers 1

formatContentFunction · 0.85

Calls 3

textTableFunction · 0.85
resetMethod · 0.80
pluralizeFunction · 0.70

Tested by

no test coverage detected