phpstan-mcp-mx 0.18.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 +25 -0
- package/README.md +165 -4
- 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/dumptype.d.ts +86 -0
- package/dist/dumptype.js +190 -0
- package/dist/dumptype.js.map +1 -0
- package/dist/failure.d.ts +1 -1
- package/dist/failure.js.map +1 -1
- package/dist/phpstan.d.ts +40 -2
- package/dist/phpstan.js +108 -6
- 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.d.ts +2 -0
- package/dist/tools/inspect.js +178 -18
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/prompts.js +28 -18
- 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/dist/tools.js +2 -1
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/dist/dumptype.js
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { readFileSync, statSync } from 'node:fs';
|
|
3
|
+
import { PhpstanError, analyseEdited } from './phpstan.js';
|
|
4
|
+
import { resolveWithin } from './project.js';
|
|
5
|
+
import { MAX_MESSAGES, displayPath, limitMessages } from './report.js';
|
|
6
|
+
/** Hoeveel expressies één aanroep hoogstens meeneemt. */
|
|
7
|
+
export const MAX_EXPRESSIONS = 10;
|
|
8
|
+
/** Hoe lang één expressie mag zijn; een dump is voor een waarde, niet voor een blok code. */
|
|
9
|
+
export const MAX_EXPRESSION_CHARS = 500;
|
|
10
|
+
/** Waar PHPStan het type van een `dumpType` mee inleidt. */
|
|
11
|
+
const DUMPED = 'Dumped type: ';
|
|
12
|
+
/**
|
|
13
|
+
* Laat zien welk type PHPStan afleidt voor een of meer expressies, vlak vóór `line`.
|
|
14
|
+
*
|
|
15
|
+
* PHPStans eigen begeleiding zegt: overschrijf het afgeleide type niet met `assert()` of
|
|
16
|
+
* een inline `@var`. Dan moet het model dat type wel kunnen zien, en tot nu toe kon dat
|
|
17
|
+
* alleen door het bestand te bewerken, te analyseren en weer terug te draaien. Hier gaat
|
|
18
|
+
* dat via een kopie buiten het project (`analyseEdited`), dus dit blijft read-only.
|
|
19
|
+
*/
|
|
20
|
+
export async function inspectType(project, request, options = {}) {
|
|
21
|
+
const file = resolveWithin(project, request.path);
|
|
22
|
+
if (!statSync(file).isFile()) {
|
|
23
|
+
throw new PhpstanError(`"${request.path}" is a directory; inspect_type needs one PHP file.`, 'invalid_argument', {
|
|
24
|
+
hint: 'Pass the path of a single PHP file.',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const probe = insertProbes(readFileSync(file, 'utf8'), request.line, request.expressions);
|
|
28
|
+
const result = await analyseEdited(project, { insteadOf: file, content: probe.content, name: copyName(project.path) }, options);
|
|
29
|
+
return readProbes(project.path, file, probe, result);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* De naam van de kopie. Met een hash van het project, want in de tijdelijke map van een
|
|
33
|
+
* runner staan alle projecten van die omgeving naast elkaar. En met het proces-id: binnen
|
|
34
|
+
* één server houdt de queue per project twee aanroepen uit elkaar, maar twee servers op
|
|
35
|
+
* hetzelfde project (twee sessies) hebben elk hun eigen queue.
|
|
36
|
+
*/
|
|
37
|
+
function copyName(project) {
|
|
38
|
+
const hash = createHash('sha256').update(project).digest('hex').slice(0, 12);
|
|
39
|
+
return `phpstan-mcp-type-${hash}-${String(process.pid)}.php`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Voegt vóór `line` één regel `\PHPStan\dumpType(<expressie>);` per expressie in.
|
|
43
|
+
*
|
|
44
|
+
* Elke expressie op een eigen regel, want PHPStan rapporteert twee dumps op één regel
|
|
45
|
+
* niet in een vaste volgorde (nagemeten) — het regelnummer is dan het enige dat een type
|
|
46
|
+
* aan zijn expressie koppelt. Een regeleinde in een expressie zou die telling verschuiven,
|
|
47
|
+
* en wordt daarom geweigerd.
|
|
48
|
+
*/
|
|
49
|
+
export function insertProbes(source, line, expressions) {
|
|
50
|
+
const cleaned = expressions.map(cleanExpression);
|
|
51
|
+
if (cleaned.length === 0 || cleaned.length > MAX_EXPRESSIONS) {
|
|
52
|
+
throw new PhpstanError(`Pass between 1 and ${String(MAX_EXPRESSIONS)} expressions; got ${String(cleaned.length)}.`, 'invalid_argument');
|
|
53
|
+
}
|
|
54
|
+
const lines = source.split('\n');
|
|
55
|
+
// Een afsluitend regeleinde levert een lege laatste "regel" op die in geen editor bestaat.
|
|
56
|
+
const count = source.endsWith('\n') ? lines.length - 1 : lines.length;
|
|
57
|
+
if (!Number.isInteger(line) || line < 1 || line > count) {
|
|
58
|
+
throw new PhpstanError(`Line ${String(line)} is outside the file, which has ${String(count)} line(s).`, 'invalid_argument', { hint: 'Pass the first line of a statement inside a function or method.' });
|
|
59
|
+
}
|
|
60
|
+
lines.splice(line - 1, 0, ...cleaned.map((expression) => `\\PHPStan\\dumpType(${expression});`));
|
|
61
|
+
return { content: lines.join('\n'), line, expressions: cleaned };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Een expressie zoals hij tussen de haakjes past. Een afsluitende `;` is vergeeflijk — wie
|
|
65
|
+
* `$rows;` meegeeft bedoelt `$rows` — maar een lege of meerregelige expressie niet.
|
|
66
|
+
*/
|
|
67
|
+
function cleanExpression(expression) {
|
|
68
|
+
const cleaned = expression.trim().replace(/[\s;]+$/, '');
|
|
69
|
+
if (cleaned === '') {
|
|
70
|
+
throw new PhpstanError('An expression is empty; pass the PHP expression whose type you want, e.g. "$user".', 'invalid_argument');
|
|
71
|
+
}
|
|
72
|
+
if (/[\r\n]/.test(cleaned)) {
|
|
73
|
+
throw new PhpstanError(`The expression ${JSON.stringify(cleaned.slice(0, 80))} spans several lines; pass each expression on one line.`, 'invalid_argument');
|
|
74
|
+
}
|
|
75
|
+
if (cleaned.length > MAX_EXPRESSION_CHARS) {
|
|
76
|
+
throw new PhpstanError(`An expression is longer than ${String(MAX_EXPRESSION_CHARS)} characters; pass the value whose type you want, not a block of code.`, 'invalid_argument');
|
|
77
|
+
}
|
|
78
|
+
return cleaned;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Leest de uitslag van een analyse met ingevoegde dumps terug.
|
|
82
|
+
*
|
|
83
|
+
* Alleen wat op de ingevoegde regels staat hoort bij een expressie; de gewone bevindingen
|
|
84
|
+
* van het bestand zijn niet gevraagd (daar is `analyse_file` voor). Parse-fouten wél,
|
|
85
|
+
* waar ze ook staan: een regel op een plek waar geen statement kan (midden in een
|
|
86
|
+
* meerregelige expressie, in een klassebody) breekt het hele bestand, en nagemeten staan
|
|
87
|
+
* de meeste fouten dan ná de ingevoegde regel. Hun regelnummers worden teruggerekend naar
|
|
88
|
+
* het oorspronkelijke bestand, anders wijzen ze een of meer regels te ver.
|
|
89
|
+
*/
|
|
90
|
+
export function readProbes(project, file, probe, result) {
|
|
91
|
+
const first = probe.line;
|
|
92
|
+
const inserted = probe.expressions.length;
|
|
93
|
+
const types = probe.expressions.map((expression) => ({
|
|
94
|
+
expression,
|
|
95
|
+
type: null,
|
|
96
|
+
problems: [],
|
|
97
|
+
}));
|
|
98
|
+
const parseErrors = [];
|
|
99
|
+
for (const finding of result.findings) {
|
|
100
|
+
if (finding.file !== file)
|
|
101
|
+
continue;
|
|
102
|
+
const at = finding.line;
|
|
103
|
+
const onProbe = at !== null && at >= first && at < first + inserted;
|
|
104
|
+
if (finding.identifier === 'phpstan.parse') {
|
|
105
|
+
parseErrors.push({
|
|
106
|
+
line: at === null ? null : onProbe ? first : at >= first + inserted ? at - inserted : at,
|
|
107
|
+
inserted: onProbe,
|
|
108
|
+
// PHPStan zet het (verschoven) regelnummer ook in de tekst; dat staat nu in `line`.
|
|
109
|
+
message: finding.message.replace(/ on line \d+$/, ''),
|
|
110
|
+
});
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (!onProbe)
|
|
114
|
+
continue;
|
|
115
|
+
const entry = types[at - first];
|
|
116
|
+
if (entry === undefined)
|
|
117
|
+
continue;
|
|
118
|
+
if (finding.identifier === 'phpstan.dumpType' && finding.message.startsWith(DUMPED)) {
|
|
119
|
+
entry.type = finding.message.slice(DUMPED.length);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
entry.problems.push({ identifier: finding.identifier, message: finding.message });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const generalErrors = limitMessages(result.generalErrors);
|
|
126
|
+
const warnings = limitMessages(result.warnings);
|
|
127
|
+
return {
|
|
128
|
+
project,
|
|
129
|
+
file: displayPath(project, file),
|
|
130
|
+
line: probe.line,
|
|
131
|
+
types,
|
|
132
|
+
parseErrors: parseErrors.slice(0, MAX_MESSAGES),
|
|
133
|
+
generalErrors: generalErrors.kept,
|
|
134
|
+
warnings: warnings.kept,
|
|
135
|
+
omitted: {
|
|
136
|
+
parseErrors: Math.max(parseErrors.length - MAX_MESSAGES, 0),
|
|
137
|
+
generalErrors: generalErrors.omitted,
|
|
138
|
+
warnings: warnings.omitted,
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/** Schrijft het antwoord uit als tekst voor het model. */
|
|
143
|
+
export function renderTypes(report) {
|
|
144
|
+
const lines = [];
|
|
145
|
+
if (report.warnings.length > 0) {
|
|
146
|
+
lines.push('WARNING — PHPStan reported this alongside the result:');
|
|
147
|
+
for (const warning of report.warnings)
|
|
148
|
+
lines.push(`- ${warning}`);
|
|
149
|
+
if (report.omitted.warnings > 0)
|
|
150
|
+
lines.push(`- (${String(report.omitted.warnings)} more message(s) not shown)`);
|
|
151
|
+
lines.push('');
|
|
152
|
+
}
|
|
153
|
+
if (report.generalErrors.length > 0) {
|
|
154
|
+
lines.push('Errors not tied to a file:');
|
|
155
|
+
for (const error of report.generalErrors)
|
|
156
|
+
lines.push(`- ${error}`);
|
|
157
|
+
if (report.omitted.generalErrors > 0)
|
|
158
|
+
lines.push(`- (${String(report.omitted.generalErrors)} more error(s) not shown)`);
|
|
159
|
+
lines.push('');
|
|
160
|
+
}
|
|
161
|
+
if (report.parseErrors.length > 0) {
|
|
162
|
+
lines.push(`PHPStan could not parse ${report.file} with the inserted line(s) before line ${String(report.line)}:`);
|
|
163
|
+
for (const error of report.parseErrors) {
|
|
164
|
+
const waar = error.inserted ? 'inserted line' : error.line === null ? 'no line' : `line ${String(error.line)}`;
|
|
165
|
+
lines.push(`- ${waar}: ${error.message}`);
|
|
166
|
+
}
|
|
167
|
+
if (report.omitted.parseErrors > 0)
|
|
168
|
+
lines.push(`- (${String(report.omitted.parseErrors)} more not shown)`);
|
|
169
|
+
lines.push('', `If the file parses without them, line ${String(report.line)} is not a place where a statement can go: ` +
|
|
170
|
+
'for example in the middle of an expression that spans several lines, or directly in a class ' +
|
|
171
|
+
'body. Pick the first line of a statement inside a function or method.');
|
|
172
|
+
return lines.join('\n');
|
|
173
|
+
}
|
|
174
|
+
lines.push(`Types right before line ${String(report.line)} of ${report.file}:`);
|
|
175
|
+
for (const probed of report.types) {
|
|
176
|
+
lines.push(`- ${probed.expression}: ${probed.type ?? 'no type reported'}`);
|
|
177
|
+
for (const problem of probed.problems) {
|
|
178
|
+
lines.push(` ${problem.identifier === null ? '' : `${problem.identifier}: `}${problem.message}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (report.types.some((probed) => probed.type === null && probed.problems.length === 0)) {
|
|
182
|
+
lines.push('', 'Where no type is reported, PHPStan did not analyse the line as code: it is inside a ' +
|
|
183
|
+
'string or heredoc, or in a part of the file PHPStan does not reach.');
|
|
184
|
+
}
|
|
185
|
+
if (report.types.some((probed) => probed.type === '*ERROR*')) {
|
|
186
|
+
lines.push('', '*ERROR* means PHPStan could not determine a type; the message under it says why.');
|
|
187
|
+
}
|
|
188
|
+
return lines.join('\n');
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=dumptype.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumptype.js","sourceRoot":"","sources":["../src/dumptype.ts"],"names":[],"mappings":"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"}
|
package/dist/failure.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* lijst uit met beleid, niet met vrije tekst — een code die maar één keer voorkomt
|
|
13
13
|
* helpt niemand.
|
|
14
14
|
*/
|
|
15
|
-
export type FailureReason = 'no_roots_configured' | 'project_outside_roots' | 'project_not_found' | 'path_outside_project' | 'path_not_found' | 'phpstan_missing' | 'config_missing' | 'bootstrap_failed' | 'baseline_unreadable' | 'invalid_setting' | 'memory_limit' | 'timeout' | 'cancelled' | 'git_missing' | 'not_a_git_repository' | 'unknown_base' | 'unsupported_with_runner' | 'unusable_output' | 'phpstan_failed';
|
|
15
|
+
export type FailureReason = 'no_roots_configured' | 'project_outside_roots' | 'project_not_found' | 'path_outside_project' | 'path_not_found' | 'invalid_argument' | 'nothing_to_analyse' | 'phpstan_missing' | 'config_missing' | 'bootstrap_failed' | 'baseline_unreadable' | 'invalid_setting' | 'memory_limit' | 'timeout' | 'cancelled' | 'git_missing' | 'not_a_git_repository' | 'unknown_base' | 'unsupported_with_runner' | 'unusable_output' | 'phpstan_failed';
|
|
16
16
|
/** Wat er naast de reden bekend is. Alles optioneel: niet elke fout weet dit. */
|
|
17
17
|
export interface FailureDetails {
|
|
18
18
|
/** Exit code van het proces, als er een proces was. */
|
package/dist/failure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AA2DA;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGzB;IACA;IAHX,YACE,OAAe,EACN,MAAqB,EACrB,UAA0B,EAAE;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAe;QACrB,YAAO,GAAP,OAAO,CAAqB;IAGvC,CAAC;CACF"}
|
package/dist/phpstan.d.ts
CHANGED
|
@@ -77,8 +77,9 @@ export declare function generateBaseline(project: ResolvedProject, options: Gene
|
|
|
77
77
|
* Zet een bestand in de tijdelijke map van de omgeving waar PHPStan voor dit project
|
|
78
78
|
* draait, en geeft het pad dáár terug.
|
|
79
79
|
*
|
|
80
|
-
* Nodig voor `unmatched_ignores
|
|
81
|
-
* host ziet een container niet — alleen de
|
|
80
|
+
* Nodig voor `unmatched_ignores` (een tijdelijke config) en `inspect_type` (een kopie
|
|
81
|
+
* van het bestand): een bestand op de host ziet een container niet — alleen de
|
|
82
|
+
* projectmap is gemount. Het ín het project
|
|
82
83
|
* zetten zou wel werken, maar dan schrijft een read-only tool in de repository. Gemeten
|
|
83
84
|
* in een echte container: PHPStan leest geen config van stdin (`/dev/stdin` en
|
|
84
85
|
* `php://stdin` gelden voor PHPStan als "does not exist"), en `/tmp` van de container is
|
|
@@ -104,6 +105,32 @@ export declare function diagnose(project: ResolvedProject, options?: Pick<Analys
|
|
|
104
105
|
* overheen. Verschillende projecten draaien wél parallel.
|
|
105
106
|
*/
|
|
106
107
|
export declare function analyse(project: ResolvedProject, options?: AnalyseOptions): Promise<AnalysisResult>;
|
|
108
|
+
/** Een bewerkte versie van één bestand, voor PHPStans editor mode. */
|
|
109
|
+
export interface EditedFile {
|
|
110
|
+
/** Absoluut pad van het bestand in het project, zoals resolveWithin het gaf. */
|
|
111
|
+
readonly insteadOf: string;
|
|
112
|
+
/** Wat PHPStan in plaats van dat bestand leest. */
|
|
113
|
+
readonly content: string;
|
|
114
|
+
/** Bestandsnaam van de kopie in de tijdelijke map; hoort uniek te zijn per project en proces. */
|
|
115
|
+
readonly name: string;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Analyseert één bestand alsof het `edited.content` bevat, zonder het project aan te
|
|
119
|
+
* raken: PHPStans editor mode (`--tmp-file` en `--instead-of`) leest de kopie op de plek
|
|
120
|
+
* van het origineel en rapporteert onder het pad van het origineel.
|
|
121
|
+
*
|
|
122
|
+
* Het bestand gaat altijd ook als pad mee. Nagemeten op PHPStan 2.2.7: zonder dat weigert
|
|
123
|
+
* PHPStan een bestand buiten de `paths` uit de config ("not in analysed project files", met
|
|
124
|
+
* exit 0 en zonder JSON), en analyseert het anders het hele project. Mét het pad was het
|
|
125
|
+
* ook zonder resultcache binnen anderhalve seconde klaar. Editor mode schrijft de
|
|
126
|
+
* resultcache niet weg; hij gaat toch door de queue, want hij leest hem wel.
|
|
127
|
+
*
|
|
128
|
+
* De kopie komt in de tijdelijke map van het project, met een runner in die van díe
|
|
129
|
+
* omgeving — dezelfde weg als de config van `unmatched_ignores`. Op de host wordt hij na
|
|
130
|
+
* afloop weggegooid; in een runner blijft hij staan en overschrijft de volgende aanroep
|
|
131
|
+
* hem, zodat er per project en proces hoogstens één blijft liggen.
|
|
132
|
+
*/
|
|
133
|
+
export declare function analyseEdited(project: ResolvedProject, edited: EditedFile, options?: AnalyseOptions): Promise<AnalysisResult>;
|
|
107
134
|
/**
|
|
108
135
|
* Leest de standaard geheugenlimiet uit de omgeving. Een onbruikbare waarde wordt
|
|
109
136
|
* hier al geweigerd en niet aan PHPStan doorgegeven: die zou er per analyse op
|
|
@@ -112,3 +139,14 @@ export declare function analyse(project: ResolvedProject, options?: AnalyseOptio
|
|
|
112
139
|
* fout zit in de serverconfiguratie en niet in de aanroep.
|
|
113
140
|
*/
|
|
114
141
|
export declare function loadDefaultMemoryLimit(env?: NodeJS.ProcessEnv): string | undefined;
|
|
142
|
+
/**
|
|
143
|
+
* Hoe deze server PHPStan in dit project aanroept als een aanroep zelf niets meegeeft:
|
|
144
|
+
* de config (null: PHPStan zoekt hem zelf) en de geheugenlimiet (null: die van PHP).
|
|
145
|
+
* Dezelfde voorrang als in `flags()`, zodat een vergelijking met een Composer-script niet
|
|
146
|
+
* een eigen versie van die regels bijhoudt. Een kapotte standaard geeft hier null in plaats
|
|
147
|
+
* van een exception: dit is een beschrijving, en de analyse weigert zo'n standaard zelf al.
|
|
148
|
+
*/
|
|
149
|
+
export declare function serverInvocation(project: ResolvedProject): {
|
|
150
|
+
config: string | null;
|
|
151
|
+
memoryLimit: string | null;
|
|
152
|
+
};
|
package/dist/phpstan.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { mkdirSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
1
3
|
import { fromConfig } from './config.js';
|
|
2
4
|
import { PROJECTS_ENV_VAR, ProjectDefaultsError, defaultsFor, isValidMemoryLimit } from './defaults.js';
|
|
3
5
|
import { ProjectError, resolveWithin } from './project.js';
|
|
@@ -8,6 +10,7 @@ import { execute } from './phpstan/process.js';
|
|
|
8
10
|
import { enqueue, throwIfAborted, withSlot } from './phpstan/queue.js';
|
|
9
11
|
import { summariseParameters } from './phpstan/parameters.js';
|
|
10
12
|
import { displayPath } from './report.js';
|
|
13
|
+
import { TmpDirError, projectTmpDir } from './tmpdir.js';
|
|
11
14
|
export { collectWarnings } from './phpstan/output.js';
|
|
12
15
|
export { carryOutKill, isReportableKillError, planKill } from './phpstan/process.js';
|
|
13
16
|
export { MAX_PARALLEL_ENV_VAR, loadMaxParallel } from './phpstan/queue.js';
|
|
@@ -117,6 +120,11 @@ function vertaalArgs(args, project, runner) {
|
|
|
117
120
|
if (arg.startsWith('--generate-baseline=')) {
|
|
118
121
|
return `--generate-baseline=${naarOmgeving(runner, project, arg.slice('--generate-baseline='.length))}`;
|
|
119
122
|
}
|
|
123
|
+
if (arg.startsWith('--instead-of=')) {
|
|
124
|
+
return `--instead-of=${naarOmgeving(runner, project, arg.slice('--instead-of='.length))}`;
|
|
125
|
+
}
|
|
126
|
+
// `--tmp-file=` bewust niet: die kopie staat al in de omgeving (writeInRunner), en
|
|
127
|
+
// buiten het project, waar er niets te vertalen valt.
|
|
120
128
|
return arg.startsWith('-') ? arg : naarOmgeving(runner, project, arg);
|
|
121
129
|
});
|
|
122
130
|
}
|
|
@@ -151,8 +159,9 @@ const WRITE_IN_RUNNER = 'd="${TMPDIR:-/tmp}"; f="$d/$2"; printf "%s" "$1" > "$f.
|
|
|
151
159
|
* Zet een bestand in de tijdelijke map van de omgeving waar PHPStan voor dit project
|
|
152
160
|
* draait, en geeft het pad dáár terug.
|
|
153
161
|
*
|
|
154
|
-
* Nodig voor `unmatched_ignores
|
|
155
|
-
* host ziet een container niet — alleen de
|
|
162
|
+
* Nodig voor `unmatched_ignores` (een tijdelijke config) en `inspect_type` (een kopie
|
|
163
|
+
* van het bestand): een bestand op de host ziet een container niet — alleen de
|
|
164
|
+
* projectmap is gemount. Het ín het project
|
|
156
165
|
* zetten zou wel werken, maar dan schrijft een read-only tool in de repository. Gemeten
|
|
157
166
|
* in een echte container: PHPStan leest geen config van stdin (`/dev/stdin` en
|
|
158
167
|
* `php://stdin` gelden voor PHPStan als "does not exist"), en `/tmp` van de container is
|
|
@@ -168,7 +177,7 @@ export async function writeInRunner(project, name, content, options = {}) {
|
|
|
168
177
|
const pad = execution.stdout.trim();
|
|
169
178
|
if (execution.spawnError !== null || execution.code !== 0 || !pad.startsWith('/')) {
|
|
170
179
|
const details = condenseDetails(execution.stderr.trim()) || 'no output';
|
|
171
|
-
throw new PhpstanError(`
|
|
180
|
+
throw new PhpstanError(`A temporary file could not be written in the runner of ${project.path} ` +
|
|
172
181
|
`(exit code ${execution.code ?? '?'}): ${details}. This needs an \`sh\` in that runner.`, 'unsupported_with_runner', { exitCode: execution.code, hint: 'Check that the runner has an sh and a writable temp directory.' });
|
|
173
182
|
}
|
|
174
183
|
return pad;
|
|
@@ -267,10 +276,61 @@ export async function analyse(project, options = {}) {
|
|
|
267
276
|
throwIfAborted(project.path, options.signal);
|
|
268
277
|
return enqueue(project.path, () => withSlot(() => run(project, options)));
|
|
269
278
|
}
|
|
270
|
-
|
|
279
|
+
/**
|
|
280
|
+
* Analyseert één bestand alsof het `edited.content` bevat, zonder het project aan te
|
|
281
|
+
* raken: PHPStans editor mode (`--tmp-file` en `--instead-of`) leest de kopie op de plek
|
|
282
|
+
* van het origineel en rapporteert onder het pad van het origineel.
|
|
283
|
+
*
|
|
284
|
+
* Het bestand gaat altijd ook als pad mee. Nagemeten op PHPStan 2.2.7: zonder dat weigert
|
|
285
|
+
* PHPStan een bestand buiten de `paths` uit de config ("not in analysed project files", met
|
|
286
|
+
* exit 0 en zonder JSON), en analyseert het anders het hele project. Mét het pad was het
|
|
287
|
+
* ook zonder resultcache binnen anderhalve seconde klaar. Editor mode schrijft de
|
|
288
|
+
* resultcache niet weg; hij gaat toch door de queue, want hij leest hem wel.
|
|
289
|
+
*
|
|
290
|
+
* De kopie komt in de tijdelijke map van het project, met een runner in die van díe
|
|
291
|
+
* omgeving — dezelfde weg als de config van `unmatched_ignores`. Op de host wordt hij na
|
|
292
|
+
* afloop weggegooid; in een runner blijft hij staan en overschrijft de volgende aanroep
|
|
293
|
+
* hem, zodat er per project en proces hoogstens één blijft liggen.
|
|
294
|
+
*/
|
|
295
|
+
export async function analyseEdited(project, edited, options = {}) {
|
|
296
|
+
requireRunnable(project);
|
|
297
|
+
throwIfAborted(project.path, options.signal);
|
|
298
|
+
return enqueue(project.path, () => withSlot(async () => {
|
|
299
|
+
throwIfAborted(project.path, options.signal);
|
|
300
|
+
const runner = runnerFor(project.path);
|
|
301
|
+
const tmpFile = runner === null
|
|
302
|
+
? writeOnHost(project, edited)
|
|
303
|
+
: await writeInRunner(project, edited.name, edited.content, options);
|
|
304
|
+
try {
|
|
305
|
+
return await run(project, { ...options, paths: [edited.insteadOf] }, [
|
|
306
|
+
`--tmp-file=${tmpFile}`,
|
|
307
|
+
`--instead-of=${edited.insteadOf}`,
|
|
308
|
+
]);
|
|
309
|
+
}
|
|
310
|
+
finally {
|
|
311
|
+
if (runner === null)
|
|
312
|
+
rmSync(tmpFile, { force: true });
|
|
313
|
+
}
|
|
314
|
+
}));
|
|
315
|
+
}
|
|
316
|
+
/** Zet de kopie in de tijdelijke map van het project op de host. */
|
|
317
|
+
function writeOnHost(project, edited) {
|
|
318
|
+
const dir = projectTmpDir(project.path);
|
|
319
|
+
const file = join(dir, edited.name);
|
|
320
|
+
try {
|
|
321
|
+
mkdirSync(dir, { recursive: true });
|
|
322
|
+
writeFileSync(file, edited.content);
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
throw new TmpDirError(`The temporary copy ${file} could not be written: ` +
|
|
326
|
+
`${error instanceof Error ? error.message : String(error)}.`);
|
|
327
|
+
}
|
|
328
|
+
return file;
|
|
329
|
+
}
|
|
330
|
+
async function run(project, options, editor = []) {
|
|
271
331
|
const runner = runnerFor(project.path);
|
|
272
332
|
const timeoutMs = timeoutFor(project, options);
|
|
273
|
-
const args = buildArgs(project, options);
|
|
333
|
+
const args = buildArgs(project, options, editor);
|
|
274
334
|
// Nog een keer, want tussen de queue, het slot en dit punt kan er tijd zitten:
|
|
275
335
|
// PHPStan starten voor een verzoek dat niemand meer wil is pure verspilling.
|
|
276
336
|
throwIfAborted(project.path, options.signal);
|
|
@@ -314,12 +374,13 @@ export function loadDefaultMemoryLimit(env = process.env) {
|
|
|
314
374
|
}
|
|
315
375
|
return configured;
|
|
316
376
|
}
|
|
317
|
-
function buildArgs(project, options) {
|
|
377
|
+
function buildArgs(project, options, editor = []) {
|
|
318
378
|
return [
|
|
319
379
|
'analyse',
|
|
320
380
|
'--error-format=json',
|
|
321
381
|
...QUIET_FLAGS,
|
|
322
382
|
...flags(project, options),
|
|
383
|
+
...editor,
|
|
323
384
|
...targets(project, options),
|
|
324
385
|
];
|
|
325
386
|
}
|
|
@@ -371,6 +432,23 @@ function buildBaselineArgs(project, options) {
|
|
|
371
432
|
}
|
|
372
433
|
/** Vlaggen die er altijd bij horen, zodat de uitvoer machineleesbaar blijft. */
|
|
373
434
|
const QUIET_FLAGS = ['--no-progress', '--no-interaction', '--no-ansi'];
|
|
435
|
+
/**
|
|
436
|
+
* Hoe deze server PHPStan in dit project aanroept als een aanroep zelf niets meegeeft:
|
|
437
|
+
* de config (null: PHPStan zoekt hem zelf) en de geheugenlimiet (null: die van PHP).
|
|
438
|
+
* Dezelfde voorrang als in `flags()`, zodat een vergelijking met een Composer-script niet
|
|
439
|
+
* een eigen versie van die regels bijhoudt. Een kapotte standaard geeft hier null in plaats
|
|
440
|
+
* van een exception: dit is een beschrijving, en de analyse weigert zo'n standaard zelf al.
|
|
441
|
+
*/
|
|
442
|
+
export function serverInvocation(project) {
|
|
443
|
+
let memoryLimit = null;
|
|
444
|
+
try {
|
|
445
|
+
memoryLimit = defaultsFor(project.path).memoryLimit ?? loadDefaultMemoryLimit() ?? null;
|
|
446
|
+
}
|
|
447
|
+
catch {
|
|
448
|
+
// Zie hierboven: de analyse meldt dit zelf, met uitleg.
|
|
449
|
+
}
|
|
450
|
+
return { config: project.config, memoryLimit };
|
|
451
|
+
}
|
|
374
452
|
/**
|
|
375
453
|
* De vlaggen die uit de opties komen, in de volgorde die PHPStan zelf aanhoudt.
|
|
376
454
|
*
|
|
@@ -412,6 +490,30 @@ function targets(project, options) {
|
|
|
412
490
|
function describeFailure(project, execution) {
|
|
413
491
|
const details = condenseDetails(execution.stderr.trim() || execution.stdout.trim());
|
|
414
492
|
const gemeen = { exitCode: execution.code, ...oorzaakUit(details) };
|
|
493
|
+
// Nagemeten: een bestand onder `excludePaths` dat expliciet als pad meegaat, geeft
|
|
494
|
+
// deze tekst met exit 0 en zonder JSON. Zonder eigen tak viel het in unusable_output,
|
|
495
|
+
// met als advies de cache te legen — terwijl het bestand gewoon niet meedoet.
|
|
496
|
+
if (/no files found to analyse/i.test(details)) {
|
|
497
|
+
const hint = 'Check `paths` and `excludePaths` in the config (diagnose_project shows them), or pass another path.';
|
|
498
|
+
return {
|
|
499
|
+
message: `PHPStan found no files to analyse in ${project.path}: a path that was passed is excluded ` +
|
|
500
|
+
`by excludePaths in the config, or the config lists no files. ${hint}\n\n${details}`,
|
|
501
|
+
reason: 'nothing_to_analyse',
|
|
502
|
+
details: { ...gemeen, hint },
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
// De server bouwt de vlaggen zelf en een pad kan geen vlag zijn (resolveWithin), dus
|
|
506
|
+
// een onbekende optie betekent een PHPStan die ouder is dan wat deze tool nodig
|
|
507
|
+
// heeft — zoals `--tmp-file` voor inspect_type.
|
|
508
|
+
if (/option does not exist/i.test(details)) {
|
|
509
|
+
const hint = 'Update phpstan/phpstan in this project.';
|
|
510
|
+
return {
|
|
511
|
+
message: `PHPStan in ${project.path} does not know an option this server passes; that version is ` +
|
|
512
|
+
`probably too old for this tool. ${hint}\n\n${details}`,
|
|
513
|
+
reason: 'phpstan_failed',
|
|
514
|
+
details: { ...gemeen, hint },
|
|
515
|
+
};
|
|
516
|
+
}
|
|
415
517
|
// "Invalid memory limit format" bevat óók "memory limit", maar is een afgekeurde
|
|
416
518
|
// waarde en geen volgelopen geheugen. Eerst afvangen, anders krijgt het model de
|
|
417
519
|
// raad een limiet mee te geven die het net al meegaf.
|
package/dist/phpstan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phpstan.js","sourceRoot":"","sources":["../src/phpstan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"phpstan.js","sourceRoot":"","sources":["../src/phpstan.ts"],"names":[],"mappings":"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"}
|
package/dist/project.d.ts
CHANGED
|
@@ -70,3 +70,18 @@ export declare function resolveNewWithin(project: ResolvedProject, argument: str
|
|
|
70
70
|
* vendor/, node_modules/ en verborgen mappen, en niet dieper dan MAX_DEPTH.
|
|
71
71
|
*/
|
|
72
72
|
export declare function discoverProjects(roots: Root[]): ProjectSummary[];
|
|
73
|
+
/**
|
|
74
|
+
* Of `child` binnen `parent` valt. Via path.relative en niet via startsWith,
|
|
75
|
+
* want "/a/foobar" begint óók met "/a/foo".
|
|
76
|
+
*/
|
|
77
|
+
export declare function contains(parent: string, child: string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* De `paths` uit de eigen config van het project, als absolute paden, of null als dat niet
|
|
80
|
+
* met zekerheid te lezen is. Regelgericht, zonder NEON-bibliotheek, net als de baseline-check:
|
|
81
|
+
* een lijst onder `paths:` (`- app/`) of een inline lijst (`paths: [app, src]`).
|
|
82
|
+
*
|
|
83
|
+
* Null en geen gok: staan de paden in een geïncludeerde config (`vendor/…`), of gebruiken ze
|
|
84
|
+
* een parameter als `%rootDir%`, dan valt niet te zeggen wat PHPStan analyseert. Relatieve
|
|
85
|
+
* paden gelden vanaf de map van de config, zoals PHPStan ze leest.
|
|
86
|
+
*/
|
|
87
|
+
export declare function readConfigPaths(project: ResolvedProject): string[] | null;
|
package/dist/project.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ToolFailure } from './failure.js';
|
|
2
|
-
import { readdirSync, realpathSync, statSync } from 'node:fs';
|
|
3
|
-
import { basename, dirname, isAbsolute, join, relative } from 'node:path';
|
|
2
|
+
import { readFileSync, readdirSync, realpathSync, statSync } from 'node:fs';
|
|
3
|
+
import { basename, dirname, isAbsolute, join, relative, resolve } from 'node:path';
|
|
4
4
|
import { defaultsFor } from './defaults.js';
|
|
5
5
|
import { isUsable, ROOTS_ENV_VAR } from './roots.js';
|
|
6
6
|
import { runnerFor } from './runner.js';
|
|
@@ -231,10 +231,61 @@ function isFile(path) {
|
|
|
231
231
|
* Of `child` binnen `parent` valt. Via path.relative en niet via startsWith,
|
|
232
232
|
* want "/a/foobar" begint óók met "/a/foo".
|
|
233
233
|
*/
|
|
234
|
-
function contains(parent, child) {
|
|
234
|
+
export function contains(parent, child) {
|
|
235
235
|
if (parent === child)
|
|
236
236
|
return true;
|
|
237
237
|
const rel = relative(parent, child);
|
|
238
238
|
return rel !== '' && !rel.startsWith('..') && !isAbsolute(rel);
|
|
239
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* De `paths` uit de eigen config van het project, als absolute paden, of null als dat niet
|
|
242
|
+
* met zekerheid te lezen is. Regelgericht, zonder NEON-bibliotheek, net als de baseline-check:
|
|
243
|
+
* een lijst onder `paths:` (`- app/`) of een inline lijst (`paths: [app, src]`).
|
|
244
|
+
*
|
|
245
|
+
* Null en geen gok: staan de paden in een geïncludeerde config (`vendor/…`), of gebruiken ze
|
|
246
|
+
* een parameter als `%rootDir%`, dan valt niet te zeggen wat PHPStan analyseert. Relatieve
|
|
247
|
+
* paden gelden vanaf de map van de config, zoals PHPStan ze leest.
|
|
248
|
+
*/
|
|
249
|
+
export function readConfigPaths(project) {
|
|
250
|
+
if (project.config === null)
|
|
251
|
+
return null;
|
|
252
|
+
const configFile = resolve(project.path, project.config);
|
|
253
|
+
let lines;
|
|
254
|
+
try {
|
|
255
|
+
lines = readFileSync(configFile, 'utf8').split(/\r?\n/);
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
const start = lines.findIndex((line) => /^\s+paths:/.test(line));
|
|
261
|
+
if (start === -1)
|
|
262
|
+
return null;
|
|
263
|
+
const eerste = lines[start] ?? '';
|
|
264
|
+
const inline = /^\s+paths:\s*\[(.*)\]\s*(#.*)?$/.exec(eerste);
|
|
265
|
+
let entries;
|
|
266
|
+
if (inline !== null) {
|
|
267
|
+
entries = (inline[1] ?? '').split(',');
|
|
268
|
+
}
|
|
269
|
+
else if (/^\s+paths:\s*(#.*)?$/.test(eerste)) {
|
|
270
|
+
const indent = /^\s*/.exec(eerste)?.[0].length ?? 0;
|
|
271
|
+
entries = [];
|
|
272
|
+
for (const line of lines.slice(start + 1)) {
|
|
273
|
+
if (line.trim() === '' || line.trim().startsWith('#'))
|
|
274
|
+
continue;
|
|
275
|
+
if ((/^\s*/.exec(line)?.[0].length ?? 0) <= indent)
|
|
276
|
+
break;
|
|
277
|
+
const item = /^\s*-\s*(.+?)\s*(#.*)?$/.exec(line);
|
|
278
|
+
if (item === null)
|
|
279
|
+
return null;
|
|
280
|
+
entries.push(item[1] ?? '');
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
const cleaned = entries.map((entry) => entry.trim().replace(/^(['"])(.*)\1$/, '$2')).filter((entry) => entry !== '');
|
|
287
|
+
if (cleaned.length === 0 || cleaned.some((entry) => entry.includes('%')))
|
|
288
|
+
return null;
|
|
289
|
+
return cleaned.map((entry) => resolve(dirname(configFile), entry));
|
|
290
|
+
}
|
|
240
291
|
//# sourceMappingURL=project.js.map
|