ng-checkup 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -10
- package/dist/angular-versions.d.ts +14 -0
- package/dist/angular-versions.js +157 -0
- package/dist/angular-versions.js.map +1 -0
- package/dist/bundle.d.ts +58 -0
- package/dist/bundle.js +189 -0
- package/dist/bundle.js.map +1 -0
- package/dist/cache.d.ts +41 -0
- package/dist/cache.js +36 -0
- package/dist/cache.js.map +1 -0
- package/dist/checks/architecture.d.ts +21 -0
- package/dist/checks/architecture.js +108 -0
- package/dist/checks/architecture.js.map +1 -0
- package/dist/checks/bundle.d.ts +24 -0
- package/dist/checks/bundle.js +112 -0
- package/dist/checks/bundle.js.map +1 -0
- package/dist/checks/context.d.ts +13 -0
- package/dist/checks/context.js.map +1 -1
- package/dist/checks/dependencies.d.ts +18 -0
- package/dist/checks/dependencies.js +89 -0
- package/dist/checks/dependencies.js.map +1 -0
- package/dist/checks/deprecated-apis.js +23 -3
- package/dist/checks/deprecated-apis.js.map +1 -1
- package/dist/checks/security.d.ts +17 -0
- package/dist/checks/security.js +87 -0
- package/dist/checks/security.js.map +1 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.js +108 -14
- package/dist/cli.js.map +1 -1
- package/dist/compatibility.d.ts +43 -0
- package/dist/compatibility.js +131 -0
- package/dist/compatibility.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.js +10 -3
- package/dist/config.js.map +1 -1
- package/dist/deprecations.js +21 -8
- package/dist/deprecations.js.map +1 -1
- package/dist/graph.d.ts +20 -0
- package/dist/graph.js +30 -0
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.js +141 -13
- package/dist/index.js.map +1 -1
- package/dist/plan.d.ts +70 -0
- package/dist/plan.js +219 -0
- package/dist/plan.js.map +1 -0
- package/dist/report/html.js +63 -1
- package/dist/report/html.js.map +1 -1
- package/dist/report/markdown.js +29 -1
- package/dist/report/markdown.js.map +1 -1
- package/dist/report/sarif.d.ts +20 -0
- package/dist/report/sarif.js +83 -0
- package/dist/report/sarif.js.map +1 -0
- package/dist/report/summary.d.ts +11 -2
- package/dist/report/summary.js +12 -0
- package/dist/report/summary.js.map +1 -1
- package/dist/report/terminal.js +39 -1
- package/dist/report/terminal.js.map +1 -1
- package/dist/scan.d.ts +43 -0
- package/dist/scan.js +60 -0
- package/dist/scan.js.map +1 -1
- package/dist/types.d.ts +37 -0
- package/dist/watch.d.ts +47 -0
- package/dist/watch.js +107 -0
- package/dist/watch.js.map +1 -0
- package/dist/workspace.d.ts +41 -0
- package/dist/workspace.js +86 -3
- package/dist/workspace.js.map +1 -1
- package/package.json +1 -1
package/dist/report/html.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formatCount, plural } from '../checks/context.js';
|
|
2
|
-
import { formatDuration, formatLocation, gradeLabel, kindLabel, overallScore, remainingCount, SCORE_EXPLANATION, severityLabel, topPriorities } from './summary.js';
|
|
2
|
+
import { formatDuration, formatLocation, gradeLabel, kindLabel, overallScore, projectAreas, remainingCount, SCORE_EXPLANATION, severityLabel, topPriorities } from './summary.js';
|
|
3
3
|
/**
|
|
4
4
|
* Renders the report as one self-contained HTML file.
|
|
5
5
|
*
|
|
@@ -56,8 +56,12 @@ export function renderHtml(report) {
|
|
|
56
56
|
</ol>
|
|
57
57
|
</section>`}
|
|
58
58
|
|
|
59
|
+
${report.projects ? projectsSection(report) : ''}
|
|
60
|
+
|
|
59
61
|
${report.baseline ? baselineSection(report.baseline) : ''}
|
|
60
62
|
|
|
63
|
+
${report.plan ? planSection(report.plan) : ''}
|
|
64
|
+
|
|
61
65
|
${report.checks.map(checkSection).join('\n ')}
|
|
62
66
|
|
|
63
67
|
<footer>
|
|
@@ -82,6 +86,46 @@ function scoreRing(score) {
|
|
|
82
86
|
<figcaption><span class="score-value">${score}</span><span class="score-unit">/100</span></figcaption>
|
|
83
87
|
</figure>`;
|
|
84
88
|
}
|
|
89
|
+
/** The upgrade plan: what to settle first, then one card per major. */
|
|
90
|
+
function planSection(plan) {
|
|
91
|
+
const item = (entry) => `<li><strong>${inline(entry.title)}</strong>${entry.count !== undefined ? ` <span class="count">${formatCount(entry.count)}</span>` : ''}${entry.command ? `<code class="command">${escape(entry.command)}</code>` : ''}${entry.detail ? `<p>${inline(entry.detail)}</p>` : ''}</li>`;
|
|
92
|
+
return `<section aria-labelledby="plan-title">
|
|
93
|
+
<h2 id="plan-title" class="section-title">Upgrade plan: Angular ${plan.from} → ${plan.to}</h2>
|
|
94
|
+
<p class="check-summary">${plural(plan.steps.length, 'step')}, one major at a time, as <code>ng update</code> requires. Requirements come from each version's published package metadata.</p>
|
|
95
|
+
${plan.before.length > 0 ? `<div class="finding step before"><div class="finding-head"><span class="chip sev-medium">First</span><strong>Before you start</strong></div><ul class="plan-items">${plan.before.map(item).join('')}</ul></div>` : ''}
|
|
96
|
+
<ol class="steps">
|
|
97
|
+
${plan.steps
|
|
98
|
+
.map((step) => `<li class="finding step">
|
|
99
|
+
<div class="finding-head"><span class="chip sev-low">→ ${step.to}</span><strong>Angular ${escape(step.version)}</strong></div>
|
|
100
|
+
<code class="command">${escape(step.command)}</code>
|
|
101
|
+
<p class="requirements">${step.requirements.map((requirement) => `<span class="${requirement.satisfied === false ? 'req req-move' : 'req'}">${escape(requirement.name)} ${escape(requirement.range)}${requirement.satisfied === false ? ` (now ${escape(requirement.current ?? '')})` : ''}</span>`).join('')}</p>
|
|
102
|
+
${step.items.length > 0 ? `<ul class="plan-items">${step.items.map(item).join('')}</ul>` : ''}
|
|
103
|
+
</li>`)
|
|
104
|
+
.join('\n ')}
|
|
105
|
+
</ol>
|
|
106
|
+
</section>`;
|
|
107
|
+
}
|
|
108
|
+
/** The per-project table of a monorepo, worst score first, with a pill per poor or fair area. */
|
|
109
|
+
function projectsSection(report) {
|
|
110
|
+
const rows = report.projects ?? [];
|
|
111
|
+
const pills = (titles, grade) => titles.map((title) => `<span class="pill grade-${grade}">${escape(title)}</span>`).join(' ');
|
|
112
|
+
return `<section aria-labelledby="projects-title">
|
|
113
|
+
<h2 id="projects-title" class="section-title">Projects</h2>
|
|
114
|
+
<p class="check-summary">${plural(rows.length, 'project')}, worst first. Each is graded on its own code; the Angular version and the third-party packages are shared and graded below.</p>
|
|
115
|
+
<div class="table-wrap"><table class="projects">
|
|
116
|
+
<thead><tr><th>Project</th><th>Type</th><th class="num">Score</th><th class="num">Files</th><th class="num">High</th><th>Areas to work on</th></tr></thead>
|
|
117
|
+
<tbody>
|
|
118
|
+
${rows
|
|
119
|
+
.map((row) => {
|
|
120
|
+
const { poor, fair } = projectAreas(row, report);
|
|
121
|
+
const band = row.score === undefined ? 'info' : row.score >= 80 ? 'good' : row.score >= 50 ? 'fair' : 'poor';
|
|
122
|
+
return `<tr><td><strong>${escape(row.name)}</strong><br><code>${escape(row.root || '.')}</code></td><td>${escape(row.type)}</td><td class="num"><span class="pill grade-${band}">${row.score ?? '-'}</span></td><td class="num">${formatCount(row.sourceFiles)}</td><td class="num">${row.highFindings}</td><td>${pills(poor, 'poor')} ${pills(fair, 'fair')}</td></tr>`;
|
|
123
|
+
})
|
|
124
|
+
.join('\n ')}
|
|
125
|
+
</tbody>
|
|
126
|
+
</table></div>
|
|
127
|
+
</section>`;
|
|
128
|
+
}
|
|
85
129
|
/** The comparison with the baseline: what got worse first, then what got better. */
|
|
86
130
|
function baselineSection(comparison) {
|
|
87
131
|
const rows = [
|
|
@@ -178,6 +222,14 @@ h1 { margin: 0 0 8px; font-size: 32px; line-height: 1.15; letter-spacing: -0.01e
|
|
|
178
222
|
.score figcaption { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
|
|
179
223
|
.score-value { font-size: 30px; font-weight: 700; font-variant-numeric: tabular-nums; }
|
|
180
224
|
.score-unit { color: var(--muted); font-size: 13px; margin-left: 1px; padding-top: 10px; }
|
|
225
|
+
.table-wrap { overflow-x: auto; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; }
|
|
226
|
+
.projects { width: 100%; border-collapse: collapse; font-size: 14px; }
|
|
227
|
+
.projects th, .projects td { text-align: left; vertical-align: top; padding: 10px 14px; border-bottom: 1px solid var(--border); }
|
|
228
|
+
.projects tbody tr:last-child td { border-bottom: 0; }
|
|
229
|
+
.projects th { color: var(--muted); font-weight: 600; font-size: 12.5px; }
|
|
230
|
+
.projects .num { text-align: right; white-space: nowrap; }
|
|
231
|
+
.projects code { color: var(--muted); font-size: 12.5px; }
|
|
232
|
+
.projects .pill { margin: 0 4px 4px 0; }
|
|
181
233
|
.section-title { font-size: 13px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin: 36px 0 12px; }
|
|
182
234
|
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
|
|
183
235
|
.card { display: flex; flex-direction: column; gap: 6px; padding: 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; text-decoration: none; transition: border-color 0.15s; }
|
|
@@ -191,6 +243,16 @@ h1 { margin: 0 0 8px; font-size: 32px; line-height: 1.15; letter-spacing: -0.01e
|
|
|
191
243
|
.sev-high { color: var(--poor); background: var(--poor-bg); } .sev-medium { color: var(--fair); background: var(--fair-bg); }
|
|
192
244
|
.sev-low, .sev-info { color: var(--info); background: var(--info-bg); }
|
|
193
245
|
.sev-good { color: var(--good); background: var(--good-bg); }
|
|
246
|
+
.steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
|
|
247
|
+
.step.before { margin-bottom: 10px; }
|
|
248
|
+
.step code.command { display: block; margin: 8px 0 0; padding: 6px 10px; border-radius: 6px; background: var(--code-bg); overflow-x: auto; white-space: nowrap; }
|
|
249
|
+
.requirements { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
250
|
+
.req { font-size: 12.5px; padding: 2px 8px; border-radius: 999px; background: var(--info-bg); color: var(--info); }
|
|
251
|
+
.req-move { background: var(--fair-bg); color: var(--fair); }
|
|
252
|
+
.plan-items { margin: 8px 0 0; padding-left: 18px; color: var(--text); font-size: 14px; }
|
|
253
|
+
.plan-items li { margin: 6px 0; }
|
|
254
|
+
.plan-items p { margin: 2px 0 0; }
|
|
255
|
+
.plan-items .count { color: var(--muted); font-size: 13px; }
|
|
194
256
|
.priorities { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; counter-reset: priority; }
|
|
195
257
|
.priorities li { display: flex; gap: 10px; align-items: baseline; padding: 12px 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; }
|
|
196
258
|
.priorities .area { color: var(--muted); font-size: 13px; margin-left: 6px; white-space: nowrap; }
|
package/dist/report/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"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"}
|
package/dist/report/markdown.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formatCount, plural } from '../checks/context.js';
|
|
2
|
-
import { formatDuration, formatLocation, gradeLabel, kindLabel, overallScore, remainingCount, SCORE_EXPLANATION, severityLabel, topPriorities } from './summary.js';
|
|
2
|
+
import { formatDuration, formatLocation, gradeLabel, kindLabel, overallScore, projectAreas, remainingCount, SCORE_EXPLANATION, severityLabel, topPriorities } from './summary.js';
|
|
3
3
|
/**
|
|
4
4
|
* Renders the report as GitHub-flavoured Markdown, for a pull request, a
|
|
5
5
|
* wiki page or an issue. Finding text already uses Markdown backticks, so it
|
|
@@ -18,12 +18,40 @@ export function renderMarkdown(report) {
|
|
|
18
18
|
for (const check of report.checks)
|
|
19
19
|
lines.push(`| ${cell(check.title)} | ${gradeLabel(check.grade)} | ${cell(check.summary)} |`);
|
|
20
20
|
lines.push('');
|
|
21
|
+
const projects = report.projects ?? [];
|
|
22
|
+
if (projects.length > 0) {
|
|
23
|
+
lines.push('## Projects', '', `${plural(projects.length, 'project')}, worst first. Each is graded on its own code; the Angular version and the third-party packages are shared and graded above.`, '');
|
|
24
|
+
lines.push('| Project | Type | Score | Files | High findings | Poor | Fair |', '| --- | --- | --- | --- | --- | --- | --- |');
|
|
25
|
+
for (const row of projects) {
|
|
26
|
+
const { poor, fair } = projectAreas(row, report);
|
|
27
|
+
lines.push(`| ${cell(row.name)} \`${cell(row.root || '.')}\` | ${row.type} | ${row.score ?? '-'} | ${formatCount(row.sourceFiles)} | ${row.highFindings} | ${cell(poor.join(', '))} | ${cell(fair.join(', '))} |`);
|
|
28
|
+
}
|
|
29
|
+
lines.push('');
|
|
30
|
+
}
|
|
21
31
|
const priorities = topPriorities(report);
|
|
22
32
|
if (priorities.length > 0) {
|
|
23
33
|
lines.push('## Top priorities', '');
|
|
24
34
|
priorities.forEach(({ check, finding }, index) => lines.push(`${index + 1}. **${severityLabel(finding.severity)}:** ${finding.message} _(${check.title})_`));
|
|
25
35
|
lines.push('');
|
|
26
36
|
}
|
|
37
|
+
const plan = report.plan;
|
|
38
|
+
if (plan) {
|
|
39
|
+
lines.push(`## Upgrade plan: Angular ${plan.from} → ${plan.to}`, '', `${plural(plan.steps.length, 'step')}, one major at a time, as \`ng update\` requires.`, '');
|
|
40
|
+
if (plan.before.length > 0) {
|
|
41
|
+
lines.push('**Before you start**', '');
|
|
42
|
+
for (const item of plan.before)
|
|
43
|
+
lines.push(`- ${item.title}${item.count !== undefined ? ` (${formatCount(item.count)})` : ''}${item.command ? `: \`${item.command}\`` : ''}${item.detail ? `. ${item.detail}` : ''}`);
|
|
44
|
+
lines.push('');
|
|
45
|
+
}
|
|
46
|
+
for (const step of plan.steps) {
|
|
47
|
+
lines.push(`### → ${step.to} (${step.version})`, '', '```bash', step.command, '```', '');
|
|
48
|
+
lines.push(step.requirements.map((requirement) => `${requirement.name} \`${requirement.range}\`${requirement.satisfied === false ? ` (now ${requirement.current}, move it in this step)` : ''}`).join(' · '), '');
|
|
49
|
+
for (const item of step.items)
|
|
50
|
+
lines.push(`- **${item.title}**${item.count !== undefined ? ` (${formatCount(item.count)})` : ''}${item.command ? `: \`${item.command}\`` : ''}${item.detail ? `. ${item.detail}` : ''}`);
|
|
51
|
+
if (step.items.length > 0)
|
|
52
|
+
lines.push('');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
27
55
|
const comparison = report.baseline;
|
|
28
56
|
if (comparison && (comparison.regressions.length > 0 || comparison.improvements.length > 0)) {
|
|
29
57
|
lines.push('## Compared with the baseline', '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/report/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/report/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Report } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The report as SARIF 2.1.0, the format GitHub code scanning (and Azure
|
|
4
|
+
* DevOps, SonarQube, VS Code's SARIF viewer) reads. Uploaded with
|
|
5
|
+
* `github/codeql-action/upload-sarif`, findings appear as annotations on the
|
|
6
|
+
* lines of a pull request and in the repository's Security tab.
|
|
7
|
+
*
|
|
8
|
+
* One rule per check, not per finding: a finding's message carries counts and
|
|
9
|
+
* names that change from run to run, and a rule id that changed with them
|
|
10
|
+
* would make GitHub close every alert and open a new one on each push.
|
|
11
|
+
*
|
|
12
|
+
* One result per example location, because a viewer shows one annotation per
|
|
13
|
+
* result. Only the examples are in the report (`--max-examples`, default 5),
|
|
14
|
+
* so CI that wants every location raises it. A finding about the project as a
|
|
15
|
+
* whole (an outdated Angular, a package that blocks the upgrade) has no file;
|
|
16
|
+
* it is attached to `package.json`, since GitHub rejects a result without a
|
|
17
|
+
* location. Paths stay relative to the analysed root, which is the repository
|
|
18
|
+
* root in the usual setup; run from there for the annotations to land.
|
|
19
|
+
*/
|
|
20
|
+
export declare function renderSarif(report: Report): string;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { remainingCount } from './summary.js';
|
|
2
|
+
/** Where each check is documented; SARIF viewers link a rule's help there. */
|
|
3
|
+
const DOCS = 'https://github.com/stefankuburovic/ng-checkup/blob/main/docs/checks.md';
|
|
4
|
+
/** SARIF `level` per severity. `info` findings are hints about the run itself and are left out. */
|
|
5
|
+
const LEVELS = { high: 'error', medium: 'warning', low: 'note' };
|
|
6
|
+
/**
|
|
7
|
+
* The report as SARIF 2.1.0, the format GitHub code scanning (and Azure
|
|
8
|
+
* DevOps, SonarQube, VS Code's SARIF viewer) reads. Uploaded with
|
|
9
|
+
* `github/codeql-action/upload-sarif`, findings appear as annotations on the
|
|
10
|
+
* lines of a pull request and in the repository's Security tab.
|
|
11
|
+
*
|
|
12
|
+
* One rule per check, not per finding: a finding's message carries counts and
|
|
13
|
+
* names that change from run to run, and a rule id that changed with them
|
|
14
|
+
* would make GitHub close every alert and open a new one on each push.
|
|
15
|
+
*
|
|
16
|
+
* One result per example location, because a viewer shows one annotation per
|
|
17
|
+
* result. Only the examples are in the report (`--max-examples`, default 5),
|
|
18
|
+
* so CI that wants every location raises it. A finding about the project as a
|
|
19
|
+
* whole (an outdated Angular, a package that blocks the upgrade) has no file;
|
|
20
|
+
* it is attached to `package.json`, since GitHub rejects a result without a
|
|
21
|
+
* location. Paths stay relative to the analysed root, which is the repository
|
|
22
|
+
* root in the usual setup; run from there for the annotations to land.
|
|
23
|
+
*/
|
|
24
|
+
export function renderSarif(report) {
|
|
25
|
+
const checks = report.checks.filter((check) => check.findings.some(isReported));
|
|
26
|
+
const sarif = {
|
|
27
|
+
$schema: 'https://json.schemastore.org/sarif-2.1.0.json',
|
|
28
|
+
version: '2.1.0',
|
|
29
|
+
runs: [
|
|
30
|
+
{
|
|
31
|
+
tool: {
|
|
32
|
+
driver: {
|
|
33
|
+
name: report.tool.name,
|
|
34
|
+
version: report.tool.version,
|
|
35
|
+
semanticVersion: report.tool.version,
|
|
36
|
+
informationUri: 'https://github.com/stefankuburovic/ng-checkup',
|
|
37
|
+
rules: checks.map(rule),
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
invocations: [{ executionSuccessful: true, endTimeUtc: report.generatedAt }],
|
|
41
|
+
results: checks.flatMap((check) => check.findings.filter(isReported).flatMap((finding) => results(check, finding))),
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
return `${JSON.stringify(sarif, null, 2)}\n`;
|
|
46
|
+
}
|
|
47
|
+
/** True for the findings that become SARIF results. */
|
|
48
|
+
function isReported(finding) {
|
|
49
|
+
return finding.severity !== 'info';
|
|
50
|
+
}
|
|
51
|
+
/** The rule describing one check. */
|
|
52
|
+
function rule(check) {
|
|
53
|
+
return {
|
|
54
|
+
id: check.id,
|
|
55
|
+
name: check.title.replace(/[^A-Za-z0-9]+(.)?/g, (_, next) => (next ? next.toUpperCase() : '')),
|
|
56
|
+
shortDescription: { text: check.title },
|
|
57
|
+
fullDescription: { text: check.summary },
|
|
58
|
+
helpUri: `${DOCS}#${check.id}`,
|
|
59
|
+
properties: { tags: ['angular', 'maintainability'] },
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** The SARIF results of one finding: one per example file, or one on `package.json`. */
|
|
63
|
+
function results(check, finding) {
|
|
64
|
+
const files = finding.files && finding.files.length > 0 ? finding.files : [{ path: 'package.json' }];
|
|
65
|
+
const more = remainingCount(finding);
|
|
66
|
+
const text = [finding.message, finding.detail, more > 0 ? `${more} more location${more === 1 ? '' : 's'} not listed; raise --max-examples to report them all.` : undefined]
|
|
67
|
+
.filter(Boolean)
|
|
68
|
+
.join('\n\n');
|
|
69
|
+
return files.map((file) => ({
|
|
70
|
+
ruleId: check.id,
|
|
71
|
+
level: LEVELS[finding.severity],
|
|
72
|
+
message: { text },
|
|
73
|
+
locations: [
|
|
74
|
+
{
|
|
75
|
+
physicalLocation: {
|
|
76
|
+
artifactLocation: { uri: file.path, uriBaseId: '%SRCROOT%' },
|
|
77
|
+
...(file.line !== undefined ? { region: { startLine: file.line } } : {}),
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=sarif.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sarif.js","sourceRoot":"","sources":["../../src/report/sarif.ts"],"names":[],"mappings":"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"}
|
package/dist/report/summary.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CheckResult, Finding, Grade, Report, Severity } from '../types.js';
|
|
1
|
+
import type { CheckResult, Finding, Grade, ProjectSummary, Report, Severity } from '../types.js';
|
|
2
2
|
/** A finding together with the check it belongs to, for the cross-check priority list. */
|
|
3
3
|
export interface Priority {
|
|
4
4
|
check: CheckResult;
|
|
@@ -14,7 +14,16 @@ export interface Priority {
|
|
|
14
14
|
* because a number whose derivation is hidden invites arguing with it instead
|
|
15
15
|
* of with the findings.
|
|
16
16
|
*/
|
|
17
|
-
export declare function overallScore(report: Report): number | undefined;
|
|
17
|
+
export declare function overallScore(report: Pick<Report, 'checks'>): number | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* The titles of a project's poor and fair areas, in report order, for the
|
|
20
|
+
* per-project tables. Titles come from the whole-workspace checks, since a
|
|
21
|
+
* project row stores only the grade per check id.
|
|
22
|
+
*/
|
|
23
|
+
export declare function projectAreas(row: ProjectSummary, report: Pick<Report, 'checks'>): {
|
|
24
|
+
poor: string[];
|
|
25
|
+
fair: string[];
|
|
26
|
+
};
|
|
18
27
|
/** The sentence every format prints under the score. */
|
|
19
28
|
export declare const SCORE_EXPLANATION = "Average of the graded areas: good counts 100, fair 60, poor 20. Areas marked info are not counted.";
|
|
20
29
|
/**
|
package/dist/report/summary.js
CHANGED
|
@@ -18,6 +18,18 @@ export function overallScore(report) {
|
|
|
18
18
|
return undefined;
|
|
19
19
|
return Math.round(graded.reduce((sum, check) => sum + GRADE_POINTS[check.grade], 0) / graded.length);
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* The titles of a project's poor and fair areas, in report order, for the
|
|
23
|
+
* per-project tables. Titles come from the whole-workspace checks, since a
|
|
24
|
+
* project row stores only the grade per check id.
|
|
25
|
+
*/
|
|
26
|
+
export function projectAreas(row, report) {
|
|
27
|
+
const titled = report.checks.filter((check) => row.grades[check.id] !== undefined);
|
|
28
|
+
return {
|
|
29
|
+
poor: titled.filter((check) => row.grades[check.id] === 'poor').map((check) => check.title),
|
|
30
|
+
fair: titled.filter((check) => row.grades[check.id] === 'fair').map((check) => check.title),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
21
33
|
/** The sentence every format prints under the score. */
|
|
22
34
|
export const SCORE_EXPLANATION = 'Average of the graded areas: good counts 100, fair 60, poor 20. Areas marked info are not counted.';
|
|
23
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/report/summary.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,MAAM,YAAY,GAA2C,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAE/F,yCAAyC;AACzC,MAAM,aAAa,GAA6B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAQxF;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/report/summary.ts"],"names":[],"mappings":"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"}
|
package/dist/report/terminal.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formatCount, plural } from '../checks/context.js';
|
|
2
|
-
import { formatDuration, formatLocation, gradeLabel, kindLabel, overallScore, remainingCount, SCORE_EXPLANATION, severityLabel, topPriorities } from './summary.js';
|
|
2
|
+
import { formatDuration, formatLocation, gradeLabel, kindLabel, overallScore, projectAreas, remainingCount, SCORE_EXPLANATION, severityLabel, topPriorities } from './summary.js';
|
|
3
3
|
/** A tiny ANSI palette; every function is the identity when colour is off. */
|
|
4
4
|
function palette(enabled) {
|
|
5
5
|
const wrap = (open, close) => (text) => (enabled ? `\u001b[${open}m${text}\u001b[${close}m` : text);
|
|
@@ -49,6 +49,25 @@ export function renderTerminal(report, options) {
|
|
|
49
49
|
const color = score >= 80 ? c.green : score >= 50 ? c.yellow : c.red;
|
|
50
50
|
lines.push(`${c.bold('Score')} ${color(c.bold(`${score}/100`))} ${c.dim(SCORE_EXPLANATION)}`);
|
|
51
51
|
}
|
|
52
|
+
// Ten rows are enough to see where the work is; a 200-project monorepo
|
|
53
|
+
// would otherwise push everything else off the screen.
|
|
54
|
+
const projects = report.projects ?? [];
|
|
55
|
+
if (projects.length > 0) {
|
|
56
|
+
const shown = options.verbose ? projects : projects.slice(0, 10);
|
|
57
|
+
const nameWidth = Math.max(...shown.map((row) => row.name.length));
|
|
58
|
+
const rootWidth = Math.max(...shown.map((row) => (row.root || '.').length));
|
|
59
|
+
lines.push('');
|
|
60
|
+
lines.push(`${c.bold('Projects')} ${c.dim(`${projects.length}, worst first, graded on their own code`)}`);
|
|
61
|
+
for (const row of shown) {
|
|
62
|
+
const { poor, fair } = projectAreas(row, report);
|
|
63
|
+
const scoreText = row.score === undefined ? ' -' : String(row.score).padStart(3);
|
|
64
|
+
const color = row.score === undefined ? c.gray : row.score >= 80 ? c.green : row.score >= 50 ? c.yellow : c.red;
|
|
65
|
+
const areas = [poor.length > 0 ? c.red(`poor: ${poor.join(', ')}`) : '', fair.length > 0 ? c.yellow(`fair: ${fair.join(', ')}`) : ''].filter(Boolean).join(' ');
|
|
66
|
+
lines.push(` ${color(scoreText)} ${row.name.padEnd(nameWidth)} ${c.dim((row.root || '.').padEnd(rootWidth))} ${areas}`.trimEnd());
|
|
67
|
+
}
|
|
68
|
+
if (shown.length < projects.length)
|
|
69
|
+
lines.push(c.dim(` and ${projects.length - shown.length} more: --verbose, or the HTML or Markdown report`));
|
|
70
|
+
}
|
|
52
71
|
const comparison = report.baseline;
|
|
53
72
|
if (comparison) {
|
|
54
73
|
lines.push('');
|
|
@@ -70,6 +89,25 @@ export function renderTerminal(report, options) {
|
|
|
70
89
|
lines.push(c.dim(' Lock the improvements in with: ng-checkup baseline'));
|
|
71
90
|
}
|
|
72
91
|
}
|
|
92
|
+
const plan = report.plan;
|
|
93
|
+
if (plan) {
|
|
94
|
+
lines.push('');
|
|
95
|
+
lines.push(`${c.bold('Upgrade plan')} ${plan.from} → ${plan.to}, ${plural(plan.steps.length, 'step')}, one major at a time`);
|
|
96
|
+
if (plan.before.length > 0) {
|
|
97
|
+
lines.push(` ${c.bold('Before you start')}`);
|
|
98
|
+
for (const item of plan.before)
|
|
99
|
+
lines.push(` · ${code(item.title)}${item.count !== undefined ? c.dim(` (${formatCount(item.count)})`) : ''}${item.command ? ` ${c.cyan(item.command)}` : ''}`);
|
|
100
|
+
}
|
|
101
|
+
for (const step of plan.steps) {
|
|
102
|
+
lines.push(` ${c.bold(`→ ${step.to}`)} ${c.cyan(step.command)}`);
|
|
103
|
+
const notes = step.requirements.filter((requirement) => requirement.name === 'Node.js' || requirement.satisfied === false || requirement.current === undefined);
|
|
104
|
+
const shown = notes.map((requirement) => `${requirement.name} ${requirement.range}${requirement.satisfied === false ? c.yellow(` (now ${requirement.current})`) : ''}`);
|
|
105
|
+
if (shown.length > 0)
|
|
106
|
+
lines.push(` ${c.dim(shown.join(' · '))}`);
|
|
107
|
+
for (const item of step.items)
|
|
108
|
+
lines.push(` · ${code(item.title)}${item.count !== undefined ? c.dim(` (${formatCount(item.count)})`) : ''}${item.command ? ` ${c.cyan(item.command)}` : ''}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
73
111
|
const priorities = topPriorities(report);
|
|
74
112
|
if (!options.verbose && priorities.length > 0) {
|
|
75
113
|
lines.push('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/report/terminal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/report/terminal.ts"],"names":[],"mappings":"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"}
|
package/dist/scan.d.ts
CHANGED
|
@@ -50,6 +50,8 @@ export interface TemplateStats {
|
|
|
50
50
|
deferBlocks: number;
|
|
51
51
|
/** `$any(...)`, the template's way of switching type checking off for one expression. */
|
|
52
52
|
anyCasts: number;
|
|
53
|
+
/** `[innerHTML]`/`[outerHTML]` bindings. Angular sanitizes them, unless the value went through `bypassSecurityTrustHtml`. */
|
|
54
|
+
innerHtmlBindings: number;
|
|
53
55
|
}
|
|
54
56
|
/** A template and where its first legacy structural directive sits, for report examples. */
|
|
55
57
|
export interface TemplateFact {
|
|
@@ -101,6 +103,47 @@ export interface SourceFileFacts {
|
|
|
101
103
|
definiteAssignments: number;
|
|
102
104
|
/** `@ts-ignore`, `@ts-expect-error` and `@ts-nocheck` comments. */
|
|
103
105
|
typeSuppressions: number;
|
|
106
|
+
/**
|
|
107
|
+
* Lines of every `x.toPromise()` call. Matched by name, not by type: an
|
|
108
|
+
* instance method is invisible to the import-based deprecation index, and
|
|
109
|
+
* outside RxJS almost nothing in an Angular app has a `toPromise` method.
|
|
110
|
+
*/
|
|
111
|
+
toPromiseLines: number[];
|
|
112
|
+
/** Lines of `x.bypassSecurityTrustHtml(...)` and its Style/Script/Url/ResourceUrl siblings: values Angular will not sanitize. */
|
|
113
|
+
bypassSecurityLines: number[];
|
|
114
|
+
/**
|
|
115
|
+
* Lines that write HTML into the DOM past Angular's sanitizer: an
|
|
116
|
+
* assignment to `.innerHTML`/`.outerHTML`, `insertAdjacentHTML`,
|
|
117
|
+
* `document.write`, and `Renderer2.setProperty(el, 'innerHTML', …)`.
|
|
118
|
+
*/
|
|
119
|
+
unsafeDomLines: number[];
|
|
120
|
+
/** Lines of `eval(...)` and `new Function(...)`: strings run as code, which also breaks a strict CSP. */
|
|
121
|
+
dynamicCodeLines: number[];
|
|
122
|
+
/**
|
|
123
|
+
* Route objects, recognised as object literals with a `path` and either a
|
|
124
|
+
* `component` (eager) or a `loadComponent`/`loadChildren` (lazy). Lines of
|
|
125
|
+
* each. A `redirectTo` route is neither.
|
|
126
|
+
*/
|
|
127
|
+
routes: {
|
|
128
|
+
eager: number[];
|
|
129
|
+
lazy: number[];
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Angular classes (component, directive, pipe, injectable) whose
|
|
133
|
+
* constructor takes parameters: dependencies injected through the
|
|
134
|
+
* constructor rather than `inject()`.
|
|
135
|
+
*/
|
|
136
|
+
constructorInjections: Array<{
|
|
137
|
+
name: string;
|
|
138
|
+
line: number;
|
|
139
|
+
parameters: number;
|
|
140
|
+
}>;
|
|
141
|
+
/** Classes implementing a router guard/resolver interface or `HttpInterceptor`, the pre-functional style. */
|
|
142
|
+
classGuards: Array<{
|
|
143
|
+
name: string;
|
|
144
|
+
line: number;
|
|
145
|
+
kind: string;
|
|
146
|
+
}>;
|
|
104
147
|
/** `templateUrl`/`template` is resolved by the template scan; inline templates are collected here. */
|
|
105
148
|
inlineTemplates: TemplateFact[];
|
|
106
149
|
}
|