phpstan-mcp-mx 0.19.0 → 0.20.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/CHANGELOG.md +18 -0
- package/README.md +125 -3
- package/dist/changed.d.ts +35 -0
- package/dist/changed.js +80 -2
- package/dist/changed.js.map +1 -1
- package/dist/compare.d.ts +69 -0
- package/dist/compare.js +101 -0
- package/dist/compare.js.map +1 -0
- package/dist/composer.d.ts +68 -0
- package/dist/composer.js +313 -0
- package/dist/composer.js.map +1 -0
- package/dist/phpstan.d.ts +11 -0
- package/dist/phpstan.js +17 -0
- package/dist/phpstan.js.map +1 -1
- package/dist/project.d.ts +15 -0
- package/dist/project.js +54 -3
- package/dist/project.js.map +1 -1
- package/dist/report.d.ts +37 -1
- package/dist/report.js +134 -4
- package/dist/report.js.map +1 -1
- package/dist/runs.d.ts +26 -1
- package/dist/runs.js +22 -3
- package/dist/runs.js.map +1 -1
- package/dist/tools/analysis.js +47 -5
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/inspect.js +102 -17
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/prompts.js +24 -16
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/shared.d.ts +46 -0
- package/dist/tools/shared.js +83 -7
- package/dist/tools/shared.js.map +1 -1
- package/package.json +1 -1
package/dist/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
|
package/dist/report.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Comparison } from './compare.js';
|
|
1
2
|
import type { AnalysisResult, Finding } from './phpstan.js';
|
|
2
3
|
/** Standaard aantal bevindingen per tool-aanroep. */
|
|
3
4
|
export declare const DEFAULT_LIMIT = 50;
|
|
@@ -18,6 +19,11 @@ export interface DisplayFinding extends Omit<Finding, 'file'> {
|
|
|
18
19
|
* een veld kosten dat niets zegt.
|
|
19
20
|
*/
|
|
20
21
|
readonly onChangedLine?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Alleen bij `analyse_changed` met `scope: "project"`: of het bestand bij de wijziging
|
|
24
|
+
* hoort. Ontbreekt anders, om dezelfde reden als `onChangedLine`.
|
|
25
|
+
*/
|
|
26
|
+
readonly inChangedFile?: boolean;
|
|
21
27
|
}
|
|
22
28
|
/**
|
|
23
29
|
* Of een bevinding op een gewijzigde regel staat. Als functie meegegeven, zodat dit
|
|
@@ -28,7 +34,13 @@ export type ChangedLineCheck = (file: string, line: number | null) => boolean;
|
|
|
28
34
|
/** Hoe de bevindingen zich verhouden tot de wijziging, geteld over álle bevindingen. */
|
|
29
35
|
export interface ChangedLinesSummary {
|
|
30
36
|
readonly onChangedLine: number;
|
|
37
|
+
/** In de gewijzigde bestanden, maar niet op een gewijzigde regel. */
|
|
31
38
|
readonly elsewhere: number;
|
|
39
|
+
/**
|
|
40
|
+
* In bestanden die niet gewijzigd zijn; alleen bij `scope: "project"`, anders null —
|
|
41
|
+
* zonder dat worden die bestanden niet eens geanalyseerd.
|
|
42
|
+
*/
|
|
43
|
+
readonly otherFiles: number | null;
|
|
32
44
|
/** Of de pagina beperkt is tot bevindingen op een gewijzigde regel. */
|
|
33
45
|
readonly onlyChangedLines: boolean;
|
|
34
46
|
}
|
|
@@ -53,6 +65,21 @@ export interface Summary {
|
|
|
53
65
|
count: number;
|
|
54
66
|
docs: string | null;
|
|
55
67
|
}[];
|
|
68
|
+
/** Meldingen die letterlijk vaker voorkomen; alleen die, de meest voorkomende eerst. */
|
|
69
|
+
readonly byMessage: readonly RepeatedMessage[];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Eén melding die meer dan eens voorkomt. Vaak één oorzaak — dezelfde methode met een te
|
|
73
|
+
* smalle parameter, in vier bestanden aangeroepen — maar niet altijd: een generieke melding
|
|
74
|
+
* als `Possibly invalid array key type mixed.` kan vier losse oorzaken hebben.
|
|
75
|
+
*/
|
|
76
|
+
export interface RepeatedMessage {
|
|
77
|
+
readonly identifier: string | null;
|
|
78
|
+
readonly message: string;
|
|
79
|
+
readonly count: number;
|
|
80
|
+
/** De eerste bestanden, alfabetisch; `fileCount` zegt hoeveel het er zijn. */
|
|
81
|
+
readonly files: readonly string[];
|
|
82
|
+
readonly fileCount: number;
|
|
56
83
|
}
|
|
57
84
|
/** Hoeveel meldingen er weggelaten zijn omdat het er te veel waren. */
|
|
58
85
|
export interface Omitted {
|
|
@@ -86,8 +113,12 @@ export interface Report {
|
|
|
86
113
|
readonly page: Page;
|
|
87
114
|
/** Op welke identifiers de pagina beperkt is, of null als er niet gefilterd is. */
|
|
88
115
|
readonly filter: readonly string[] | null;
|
|
116
|
+
/** Op welke bestanden of mappen de pagina beperkt is, of null zonder `onlyIn`. */
|
|
117
|
+
readonly onlyIn: readonly string[] | null;
|
|
89
118
|
/** Null als er geen wijziging is om tegen te leggen, zoals bij analyse_project. */
|
|
90
119
|
readonly changedLines: ChangedLinesSummary | null;
|
|
120
|
+
/** Hoe dit zich verhoudt tot een eerdere analyse (`compareTo`), of null zonder vergelijking. */
|
|
121
|
+
readonly comparison: Comparison | null;
|
|
91
122
|
}
|
|
92
123
|
/** Waar in de bevindingenlijst dit antwoord begint en hoe lang het is. */
|
|
93
124
|
export interface Window {
|
|
@@ -101,13 +132,18 @@ export interface Window {
|
|
|
101
132
|
readonly identifiers?: readonly string[] | undefined;
|
|
102
133
|
/** Alleen bevindingen op een gewijzigde regel; doet niets zonder ChangedLineCheck. */
|
|
103
134
|
readonly onlyChangedLines?: boolean | undefined;
|
|
135
|
+
/**
|
|
136
|
+
* Alleen bevindingen in deze bestanden of mappen, relatief aan de projectroot. Een map
|
|
137
|
+
* matcht tot en met een `/`: `app/Model` past niet op `app/Models/User.php`.
|
|
138
|
+
*/
|
|
139
|
+
readonly onlyIn?: readonly string[] | undefined;
|
|
104
140
|
}
|
|
105
141
|
/**
|
|
106
142
|
* Zet een analyse om in het antwoord dat de tool teruggeeft: tellingen over alles,
|
|
107
143
|
* en maar één pagina bevindingen. De samenvatting rekent bewust over de volledige
|
|
108
144
|
* lijst — anders zou de tweede pagina andere totalen melden dan de eerste.
|
|
109
145
|
*/
|
|
110
|
-
export declare function buildReport(result: AnalysisResult, window?: Window, notices?: readonly string[], onChangedLine?: ChangedLineCheck): Report;
|
|
146
|
+
export declare function buildReport(result: AnalysisResult, window?: Window, notices?: readonly string[], onChangedLine?: ChangedLineCheck, comparison?: Comparison | null, inChangedFile?: (file: string) => boolean): Report;
|
|
111
147
|
/**
|
|
112
148
|
* Schrijft een rapport uit als tekst voor het model. Met een `runId` noemt de
|
|
113
149
|
* vervolgregel die erbij, zodat de volgende pagina uit hetzelfde resultaat komt.
|
package/dist/report.js
CHANGED
|
@@ -5,6 +5,12 @@ export const DEFAULT_LIMIT = 50;
|
|
|
5
5
|
export const MAX_LIMIT = 500;
|
|
6
6
|
/** Hoeveel regels de samenvattingslijsten hoogstens tonen. */
|
|
7
7
|
const SUMMARY_ROWS = 15;
|
|
8
|
+
/** Hoeveel herhaalde meldingen de samenvatting hoogstens noemt: het is een wegwijzer, geen lijst. */
|
|
9
|
+
const MESSAGE_ROWS = 10;
|
|
10
|
+
/** Hoeveel bestanden er per herhaalde melding genoemd worden; `fileCount` telt ze allemaal. */
|
|
11
|
+
const MESSAGE_FILES = 5;
|
|
12
|
+
/** Hoe lang een herhaalde melding in de tekst mag zijn; structuredContent heeft hem heel. */
|
|
13
|
+
const MESSAGE_CHARS = 200;
|
|
8
14
|
/**
|
|
9
15
|
* Hoeveel losse meldingen (waarschuwingen, algemene fouten) er hoogstens mee gaan.
|
|
10
16
|
* Onbegrensd doorgeven was een contextbom: een mislukte Laravel-bootstrap levert een
|
|
@@ -18,19 +24,24 @@ const MAX_MESSAGE_CHARS = 1000;
|
|
|
18
24
|
* en maar één pagina bevindingen. De samenvatting rekent bewust over de volledige
|
|
19
25
|
* lijst — anders zou de tweede pagina andere totalen melden dan de eerste.
|
|
20
26
|
*/
|
|
21
|
-
export function buildReport(result, window = {}, notices = [], onChangedLine) {
|
|
27
|
+
export function buildReport(result, window = {}, notices = [], onChangedLine, comparison = null, inChangedFile) {
|
|
22
28
|
const all = result.findings.map((finding) => ({
|
|
23
29
|
...finding,
|
|
24
30
|
file: displayPath(result.project, finding.file),
|
|
25
31
|
...(onChangedLine === undefined ? {} : { onChangedLine: onChangedLine(finding.file, finding.line) }),
|
|
32
|
+
...(inChangedFile === undefined ? {} : { inChangedFile: inChangedFile(finding.file) }),
|
|
26
33
|
}));
|
|
27
34
|
// Filteren vóór het pagineren, maar ná het samenvatten: page.total moet de
|
|
28
35
|
// gefilterde lijst beschrijven, anders liegen offset en hasMore. De samenvatting
|
|
29
36
|
// rekent over alles, zodat het model ziet wat het met een filter wegliet.
|
|
30
37
|
const filter = normaliseFilter(window.identifiers);
|
|
38
|
+
const onlyIn = normalisePlaces(result.project, window.onlyIn);
|
|
31
39
|
const onlyChanged = onChangedLine !== undefined && window.onlyChangedLines === true;
|
|
32
|
-
const selected = all.filter((finding) => (filter === null || matches(finding, filter)) &&
|
|
40
|
+
const selected = all.filter((finding) => (filter === null || matches(finding, filter)) &&
|
|
41
|
+
(onlyIn === null || isIn(finding.file, onlyIn)) &&
|
|
42
|
+
(!onlyChanged || finding.onChangedLine === true));
|
|
33
43
|
const onChangedCount = all.filter((finding) => finding.onChangedLine === true).length;
|
|
44
|
+
const otherFiles = inChangedFile === undefined ? null : all.filter((finding) => finding.inChangedFile === false).length;
|
|
34
45
|
const limit = clamp(window.limit ?? DEFAULT_LIMIT, 1, MAX_LIMIT);
|
|
35
46
|
const offset = clamp(window.offset ?? 0, 0, Math.max(selected.length, 0));
|
|
36
47
|
const findings = selected.slice(offset, offset + limit);
|
|
@@ -54,9 +65,16 @@ export function buildReport(result, window = {}, notices = [], onChangedLine) {
|
|
|
54
65
|
hasMore: offset + findings.length < selected.length,
|
|
55
66
|
},
|
|
56
67
|
filter,
|
|
68
|
+
onlyIn,
|
|
57
69
|
changedLines: onChangedLine === undefined
|
|
58
70
|
? null
|
|
59
|
-
: {
|
|
71
|
+
: {
|
|
72
|
+
onChangedLine: onChangedCount,
|
|
73
|
+
elsewhere: all.length - onChangedCount - (otherFiles ?? 0),
|
|
74
|
+
otherFiles,
|
|
75
|
+
onlyChangedLines: onlyChanged,
|
|
76
|
+
},
|
|
77
|
+
comparison,
|
|
60
78
|
};
|
|
61
79
|
}
|
|
62
80
|
/** Lege of alleen-witruimte-waarden vallen weg; blijft er niets over, dan is er geen filter. */
|
|
@@ -66,6 +84,33 @@ function normaliseFilter(identifiers) {
|
|
|
66
84
|
const cleaned = [...new Set(identifiers.map((value) => value.trim()).filter((value) => value !== ''))];
|
|
67
85
|
return cleaned.length === 0 ? null : cleaned;
|
|
68
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* De plekken voor `onlyIn`, zoals `displayPath` ze schrijft: relatief aan het project, met `/`,
|
|
89
|
+
* zonder `./` ervoor en zonder `/` erachter. Een absoluut pad binnen het project wordt eerst
|
|
90
|
+
* relatief — anders matcht het nooit, en zegt de tekst "No findings in …" terwijl ze er wel
|
|
91
|
+
* zijn. Blijft er niets over, dan is er geen filter, net als bij identifiers.
|
|
92
|
+
*/
|
|
93
|
+
function normalisePlaces(project, places) {
|
|
94
|
+
if (places === undefined)
|
|
95
|
+
return null;
|
|
96
|
+
const cleaned = [
|
|
97
|
+
...new Set(places
|
|
98
|
+
.map((place) => place.trim())
|
|
99
|
+
.map((place) => (isAbsolute(place) ? displayPath(project, place) : place))
|
|
100
|
+
.map((place) => place.replace(/\\/g, '/').replace(/^(\.\/)+/, '').replace(/\/+$/, ''))
|
|
101
|
+
.filter((place) => place !== '' && place !== '.')),
|
|
102
|
+
];
|
|
103
|
+
return cleaned.length === 0 ? null : cleaned;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Exact, of als map tot en met een `/`. Alleen `startsWith` zou `app/Model` ook op
|
|
107
|
+
* `app/Models/User.php` laten passen — dezelfde valkuil als bij de identifiers hieronder
|
|
108
|
+
* en bij de containment-check op paden.
|
|
109
|
+
*/
|
|
110
|
+
function isIn(file, places) {
|
|
111
|
+
const pad = file.replace(/\\/g, '/');
|
|
112
|
+
return places.some((place) => pad === place || pad.startsWith(`${place}/`));
|
|
113
|
+
}
|
|
69
114
|
/**
|
|
70
115
|
* Exact, of als groep op een punt. Op `startsWith` alleen matchen zou "argument"
|
|
71
116
|
* ook op "argumentx.iets" laten passen — dezelfde valkuil als bij de
|
|
@@ -107,6 +152,10 @@ export function renderReport(report, runId) {
|
|
|
107
152
|
}
|
|
108
153
|
lines.push('');
|
|
109
154
|
}
|
|
155
|
+
// Vóór de vroege uitgang bij nul bevindingen: "alles opgelost" is juist het geval
|
|
156
|
+
// waarin de vergelijking het meest zegt.
|
|
157
|
+
if (report.comparison !== null)
|
|
158
|
+
lines.push(...describeComparison(report.comparison), '');
|
|
110
159
|
const filters = describeFilters(report);
|
|
111
160
|
const changes = report.changedLines === null ? null : describeChangedLines(report.changedLines);
|
|
112
161
|
if (report.page.total === 0) {
|
|
@@ -134,6 +183,9 @@ export function renderReport(report, runId) {
|
|
|
134
183
|
...(report.summary.byIdentifier.some((row) => row.docs !== null)
|
|
135
184
|
? [' Explanation per identifier: https://phpstan.org/error-identifiers/<identifier>']
|
|
136
185
|
: []));
|
|
186
|
+
if (report.summary.byMessage.length > 0) {
|
|
187
|
+
lines.push('', 'Same message more than once (one fix may cover several; check that they point to the same code):', ...report.summary.byMessage.map((row) => ` ${pad(row.count)} ${row.identifier ?? '-'} ${shortMessage(row)}`));
|
|
188
|
+
}
|
|
137
189
|
if (report.summary.byFile.length > 1) {
|
|
138
190
|
lines.push('', 'Most affected files:', ...report.summary.byFile.map((row) => ` ${pad(row.count)} ${row.file}`));
|
|
139
191
|
}
|
|
@@ -147,7 +199,7 @@ export function renderReport(report, runId) {
|
|
|
147
199
|
for (const finding of report.findings) {
|
|
148
200
|
if (finding.file !== current) {
|
|
149
201
|
current = finding.file;
|
|
150
|
-
lines.push('', current);
|
|
202
|
+
lines.push('', finding.inChangedFile === false ? `${current} (not changed)` : current);
|
|
151
203
|
}
|
|
152
204
|
const mark = marked ? (finding.onChangedLine === true ? '+ ' : ' ') : '';
|
|
153
205
|
const where = finding.line === null ? ' ?' : String(finding.line).padStart(4);
|
|
@@ -175,6 +227,8 @@ function describeFilters(report) {
|
|
|
175
227
|
const parts = [];
|
|
176
228
|
if (report.filter !== null)
|
|
177
229
|
parts.push(`with identifier ${report.filter.join(', ')}`);
|
|
230
|
+
if (report.onlyIn !== null)
|
|
231
|
+
parts.push(`in ${report.onlyIn.join(', ')}`);
|
|
178
232
|
if (report.changedLines?.onlyChangedLines === true)
|
|
179
233
|
parts.push('on a changed line');
|
|
180
234
|
return parts.length === 0 ? null : parts.join(' ');
|
|
@@ -185,6 +239,17 @@ function describeFilters(report) {
|
|
|
185
239
|
* bij de aanroepen, en die regels heb je niet aangeraakt.
|
|
186
240
|
*/
|
|
187
241
|
function describeChangedLines(changes) {
|
|
242
|
+
if (changes.otherFiles !== null) {
|
|
243
|
+
const zin = `${changes.onChangedLine} on a line you changed (marked with +), ` +
|
|
244
|
+
`${changes.elsewhere} elsewhere in the changed files, ${changes.otherFiles} in files you did not change.`;
|
|
245
|
+
// Het voorbehoud is hier nog zwaarder: in een project zonder baseline staan alle oude
|
|
246
|
+
// fouten onder "not changed". Welke door de wijziging komen, zegt één analyse niet.
|
|
247
|
+
return changes.otherFiles === 0 && changes.elsewhere === 0
|
|
248
|
+
? zin
|
|
249
|
+
: `${zin} Those may have been there already, or follow from your change — an altered ` +
|
|
250
|
+
'signature, type or method shows up at its call sites. One analysis cannot tell which; ' +
|
|
251
|
+
'a finding that names what you changed is the strongest hint.';
|
|
252
|
+
}
|
|
188
253
|
const zin = `${changes.onChangedLine} on a line you changed (marked with +), ` +
|
|
189
254
|
`${changes.elsewhere} elsewhere in these files.`;
|
|
190
255
|
return changes.elsewhere === 0
|
|
@@ -192,6 +257,46 @@ function describeChangedLines(changes) {
|
|
|
192
257
|
: `${zin} The latter may have been there already, but may also follow from your change — ` +
|
|
193
258
|
'an altered signature affects its call sites.';
|
|
194
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* De vergelijking met een eerdere analyse, als blok boven de bevindingen. Hier en niet in
|
|
262
|
+
* compare.ts: dat bestand gebruikt displayPath van hiernaast, en andersom importeren zou
|
|
263
|
+
* een cyclus zijn.
|
|
264
|
+
*/
|
|
265
|
+
function describeComparison(comparison) {
|
|
266
|
+
const van = `the analysis of ${String(comparison.ageSeconds)}s ago (runId ${comparison.comparedTo})`;
|
|
267
|
+
const lines = [
|
|
268
|
+
comparison.fixed === 0 && comparison.new === 0
|
|
269
|
+
? `Compared with ${van}: nothing fixed, nothing new; ${String(comparison.remaining)} still open.`
|
|
270
|
+
: `Compared with ${van}: ${String(comparison.fixed)} fixed, ${String(comparison.new)} new, ` +
|
|
271
|
+
`${String(comparison.remaining)} still open.`,
|
|
272
|
+
];
|
|
273
|
+
if (comparison.fixedFindings.length > 0) {
|
|
274
|
+
lines.push('Fixed (line numbers from that analysis):', ...comparison.fixedFindings.map(comparedLine));
|
|
275
|
+
if (comparison.omitted.fixed > 0)
|
|
276
|
+
lines.push(` (and ${String(comparison.omitted.fixed)} more)`);
|
|
277
|
+
}
|
|
278
|
+
if (comparison.newFindings.length > 0) {
|
|
279
|
+
lines.push('New:', ...comparison.newFindings.map(comparedLine));
|
|
280
|
+
if (comparison.omitted.new > 0)
|
|
281
|
+
lines.push(` (and ${String(comparison.omitted.new)} more)`);
|
|
282
|
+
}
|
|
283
|
+
if (comparison.notCompared.findings > 0) {
|
|
284
|
+
lines.push(`${String(comparison.notCompared.findings)} finding(s) are in files that only one of the two analyses ` +
|
|
285
|
+
`covered, so they are not compared: ${comparison.notCompared.files.join(', ')}.`);
|
|
286
|
+
}
|
|
287
|
+
return lines;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Eén groep uit de vergelijking. Met meer regels dan `count` staat erbij dat niet te
|
|
291
|
+
* zeggen is welke het is: gekoppeld wordt op melding, en die is voor alle regels gelijk.
|
|
292
|
+
*/
|
|
293
|
+
function comparedLine(entry) {
|
|
294
|
+
const regels = entry.lines.map((line) => (line === null ? '?' : String(line))).join(', ');
|
|
295
|
+
const welke = entry.count < entry.lines.length
|
|
296
|
+
? ` (${String(entry.count)} of these ${String(entry.lines.length)}; which one cannot be told apart)`
|
|
297
|
+
: '';
|
|
298
|
+
return ` ${entry.file}:${regels} ${entry.identifier ?? '-'} ${entry.message}${welke}`;
|
|
299
|
+
}
|
|
195
300
|
/**
|
|
196
301
|
* Kapt een meldinglijst af op aantal en op lengte per melding. Het aantal
|
|
197
302
|
* weggelaten meldingen komt apart terug in plaats van als extra regel in de lijst:
|
|
@@ -224,10 +329,18 @@ function docsUrl(identifier) {
|
|
|
224
329
|
function summarise(findings) {
|
|
225
330
|
const perFile = new Map();
|
|
226
331
|
const perIdentifier = new Map();
|
|
332
|
+
const perMessage = new Map();
|
|
227
333
|
for (const finding of findings) {
|
|
228
334
|
perFile.set(finding.file, (perFile.get(finding.file) ?? 0) + 1);
|
|
229
335
|
const identifier = finding.identifier ?? NO_IDENTIFIER;
|
|
230
336
|
perIdentifier.set(identifier, (perIdentifier.get(identifier) ?? 0) + 1);
|
|
337
|
+
// Exact, met de identifier erbij. Geen eigen normalisering (getallen of namen eruit):
|
|
338
|
+
// die zou bij elke PHPStan-release verder afdrijven, het bezwaar tegen explain_error.
|
|
339
|
+
const key = JSON.stringify([finding.identifier, finding.message]);
|
|
340
|
+
const group = perMessage.get(key) ?? { identifier: finding.identifier, message: finding.message, count: 0, files: new Set() };
|
|
341
|
+
group.count++;
|
|
342
|
+
group.files.add(finding.file);
|
|
343
|
+
perMessage.set(key, group);
|
|
231
344
|
}
|
|
232
345
|
return {
|
|
233
346
|
filesWithFindings: perFile.size,
|
|
@@ -237,8 +350,25 @@ function summarise(findings) {
|
|
|
237
350
|
count,
|
|
238
351
|
docs: identifier === NO_IDENTIFIER ? null : docsUrl(identifier),
|
|
239
352
|
})),
|
|
353
|
+
byMessage: [...perMessage.values()]
|
|
354
|
+
.filter((group) => group.count > 1)
|
|
355
|
+
.sort((a, b) => b.count - a.count || b.files.size - a.files.size || a.message.localeCompare(b.message))
|
|
356
|
+
.slice(0, MESSAGE_ROWS)
|
|
357
|
+
.map((group) => ({
|
|
358
|
+
identifier: group.identifier,
|
|
359
|
+
message: group.message,
|
|
360
|
+
count: group.count,
|
|
361
|
+
files: [...group.files].sort().slice(0, MESSAGE_FILES),
|
|
362
|
+
fileCount: group.files.size,
|
|
363
|
+
})),
|
|
240
364
|
};
|
|
241
365
|
}
|
|
366
|
+
/** Een herhaalde melding als één regel: ingekort, met waar hij staat. */
|
|
367
|
+
function shortMessage(row) {
|
|
368
|
+
const message = row.message.length <= MESSAGE_CHARS ? row.message : `${row.message.slice(0, MESSAGE_CHARS)}…`;
|
|
369
|
+
const waar = row.fileCount === 1 ? `in ${row.files[0] ?? '?'}` : `in ${String(row.fileCount)} files`;
|
|
370
|
+
return `${message} (${waar})`;
|
|
371
|
+
}
|
|
242
372
|
/** De drukste regels eerst, bij gelijk aantal alfabetisch zodat de volgorde vastligt. */
|
|
243
373
|
function topRows(counts) {
|
|
244
374
|
return [...counts.entries()]
|
package/dist/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
package/dist/runs.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Comparison } from './compare.js';
|
|
1
2
|
import type { AnalysisResult } from './phpstan.js';
|
|
2
3
|
import type { ChangedLineCheck } from './report.js';
|
|
3
4
|
/**
|
|
@@ -12,6 +13,13 @@ export declare const MAX_RUNS = 16;
|
|
|
12
13
|
* oplevert.
|
|
13
14
|
*/
|
|
14
15
|
export declare const RUN_TTL_MS: number;
|
|
16
|
+
/**
|
|
17
|
+
* Hoe lang een resultaat bruikbaar blijft als uitgangspunt van een vergelijking
|
|
18
|
+
* (`compareTo`). Langer dan voor een pagina, want hier is de oude stand juist het punt:
|
|
19
|
+
* tussen de analyse vóór een reparatie en die erna zit het repareren zelf, en dat duurt
|
|
20
|
+
* al snel langer dan tien minuten. Het geheugen begrenst `MAX_RUNS`, niet de tijd.
|
|
21
|
+
*/
|
|
22
|
+
export declare const COMPARE_TTL_MS: number;
|
|
15
23
|
/** Alles wat nodig is om een pagina opnieuw op te bouwen zonder PHPStan te starten. */
|
|
16
24
|
export interface StoredRun {
|
|
17
25
|
readonly project: string;
|
|
@@ -21,6 +29,16 @@ export interface StoredRun {
|
|
|
21
29
|
readonly notices: readonly string[];
|
|
22
30
|
readonly heading?: string;
|
|
23
31
|
readonly onChangedLine?: ChangedLineCheck;
|
|
32
|
+
/** Bij `analyse_changed` met `scope: "project"`: of een bestand bij de wijziging van toen hoort. */
|
|
33
|
+
readonly inChangedFile?: (file: string) => boolean;
|
|
34
|
+
/**
|
|
35
|
+
* De paden die geanalyseerd zijn, of niets als de config dat bepaalde. Nodig voor een
|
|
36
|
+
* vergelijking bij `analyse_changed`: daar volgt de lijst uit git en niet uit de
|
|
37
|
+
* argumenten, dus dezelfde sleutel kan een andere set bestanden betekenen.
|
|
38
|
+
*/
|
|
39
|
+
readonly scope?: readonly string[];
|
|
40
|
+
/** De vergelijking die bij deze run gemaakt is, zodat een volgende pagina hem ook heeft. */
|
|
41
|
+
readonly comparison?: Comparison;
|
|
24
42
|
}
|
|
25
43
|
/** Een bewaarde run met het moment waarop hij gemaakt is. */
|
|
26
44
|
export interface FoundRun extends StoredRun {
|
|
@@ -39,8 +57,9 @@ export declare class RunStore {
|
|
|
39
57
|
private readonly now;
|
|
40
58
|
private readonly max;
|
|
41
59
|
private readonly ttlMs;
|
|
60
|
+
private readonly keepMs;
|
|
42
61
|
private readonly runs;
|
|
43
|
-
constructor(now?: () => number, max?: number, ttlMs?: number);
|
|
62
|
+
constructor(now?: () => number, max?: number, ttlMs?: number, keepMs?: number);
|
|
44
63
|
/** Bewaart een run en geeft zijn id terug. De oudste valt eruit als het er te veel worden. */
|
|
45
64
|
put(run: StoredRun): string;
|
|
46
65
|
/**
|
|
@@ -49,6 +68,12 @@ export declare class RunStore {
|
|
|
49
68
|
* gevallen zou een pagina eruit iets anders beschrijven dan waar om gevraagd wordt.
|
|
50
69
|
*/
|
|
51
70
|
get(id: string, project: string, key: string): FoundRun | null;
|
|
71
|
+
/**
|
|
72
|
+
* Dezelfde voorwaarden, maar met de langere termijn van een vergelijking. Een run van
|
|
73
|
+
* een half uur oud is geen bruikbare pagina meer, wel een bruikbaar "vóór".
|
|
74
|
+
*/
|
|
75
|
+
forComparison(id: string, project: string, key: string): FoundRun | null;
|
|
76
|
+
private find;
|
|
52
77
|
private prune;
|
|
53
78
|
}
|
|
54
79
|
/**
|
package/dist/runs.js
CHANGED
|
@@ -11,6 +11,13 @@ export const MAX_RUNS = 16;
|
|
|
11
11
|
* oplevert.
|
|
12
12
|
*/
|
|
13
13
|
export const RUN_TTL_MS = 10 * 60_000;
|
|
14
|
+
/**
|
|
15
|
+
* Hoe lang een resultaat bruikbaar blijft als uitgangspunt van een vergelijking
|
|
16
|
+
* (`compareTo`). Langer dan voor een pagina, want hier is de oude stand juist het punt:
|
|
17
|
+
* tussen de analyse vóór een reparatie en die erna zit het repareren zelf, en dat duurt
|
|
18
|
+
* al snel langer dan tien minuten. Het geheugen begrenst `MAX_RUNS`, niet de tijd.
|
|
19
|
+
*/
|
|
20
|
+
export const COMPARE_TTL_MS = 60 * 60_000;
|
|
14
21
|
/**
|
|
15
22
|
* De bewaarde analyses van deze server.
|
|
16
23
|
*
|
|
@@ -23,11 +30,13 @@ export class RunStore {
|
|
|
23
30
|
now;
|
|
24
31
|
max;
|
|
25
32
|
ttlMs;
|
|
33
|
+
keepMs;
|
|
26
34
|
runs = new Map();
|
|
27
|
-
constructor(now = Date.now, max = MAX_RUNS, ttlMs = RUN_TTL_MS) {
|
|
35
|
+
constructor(now = Date.now, max = MAX_RUNS, ttlMs = RUN_TTL_MS, keepMs = Math.max(ttlMs, COMPARE_TTL_MS)) {
|
|
28
36
|
this.now = now;
|
|
29
37
|
this.max = max;
|
|
30
38
|
this.ttlMs = ttlMs;
|
|
39
|
+
this.keepMs = keepMs;
|
|
31
40
|
}
|
|
32
41
|
/** Bewaart een run en geeft zijn id terug. De oudste valt eruit als het er te veel worden. */
|
|
33
42
|
put(run) {
|
|
@@ -49,14 +58,24 @@ export class RunStore {
|
|
|
49
58
|
* gevallen zou een pagina eruit iets anders beschrijven dan waar om gevraagd wordt.
|
|
50
59
|
*/
|
|
51
60
|
get(id, project, key) {
|
|
61
|
+
return this.find(id, project, key, this.ttlMs);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Dezelfde voorwaarden, maar met de langere termijn van een vergelijking. Een run van
|
|
65
|
+
* een half uur oud is geen bruikbare pagina meer, wel een bruikbaar "vóór".
|
|
66
|
+
*/
|
|
67
|
+
forComparison(id, project, key) {
|
|
68
|
+
return this.find(id, project, key, this.keepMs);
|
|
69
|
+
}
|
|
70
|
+
find(id, project, key, maxAgeMs) {
|
|
52
71
|
this.prune();
|
|
53
72
|
const run = this.runs.get(id);
|
|
54
73
|
if (run === undefined || run.project !== project || run.key !== key)
|
|
55
74
|
return null;
|
|
56
|
-
return run;
|
|
75
|
+
return run.createdAt < this.now() - maxAgeMs ? null : run;
|
|
57
76
|
}
|
|
58
77
|
prune() {
|
|
59
|
-
const grens = this.now() - this.
|
|
78
|
+
const grens = this.now() - this.keepMs;
|
|
60
79
|
for (const [id, run] of this.runs) {
|
|
61
80
|
if (run.createdAt < grens)
|
|
62
81
|
this.runs.delete(id);
|
package/dist/runs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"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"}
|