phpstan-mcp-mx 0.21.0 → 0.22.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 +20 -1
- package/README.md +85 -62
- package/dist/baseline.d.ts +1 -1
- package/dist/baseline.js +3 -3
- package/dist/baseline.js.map +1 -1
- package/dist/changed.d.ts +5 -5
- package/dist/changed.js +16 -9
- package/dist/changed.js.map +1 -1
- package/dist/compare.d.ts +3 -3
- package/dist/compare.js +2 -2
- package/dist/composer.d.ts +2 -2
- package/dist/composer.js +6 -6
- package/dist/composer.js.map +1 -1
- package/dist/config.d.ts +4 -3
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/defaults.d.ts +1 -1
- package/dist/defaults.js +1 -1
- package/dist/dumptype.d.ts +1 -1
- package/dist/dumptype.js +4 -4
- package/dist/dumptype.js.map +1 -1
- package/dist/failure.d.ts +2 -2
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/dist/php.d.ts +46 -0
- package/dist/php.js +95 -0
- package/dist/php.js.map +1 -0
- package/dist/phpstan/output.d.ts +2 -2
- package/dist/phpstan/output.js +4 -4
- package/dist/phpstan/output.js.map +1 -1
- package/dist/phpstan/parameters.d.ts +2 -2
- package/dist/phpstan/parameters.js +1 -1
- package/dist/phpstan/process.d.ts +16 -5
- package/dist/phpstan/process.js +25 -10
- package/dist/phpstan/process.js.map +1 -1
- package/dist/phpstan/queue.d.ts +1 -1
- package/dist/phpstan/queue.js +2 -2
- package/dist/phpstan/queue.js.map +1 -1
- package/dist/phpstan.d.ts +6 -6
- package/dist/phpstan.js +27 -19
- package/dist/phpstan.js.map +1 -1
- package/dist/project.d.ts +1 -1
- package/dist/project.js +3 -3
- package/dist/project.js.map +1 -1
- package/dist/report.d.ts +5 -5
- package/dist/report.js +9 -9
- package/dist/report.js.map +1 -1
- package/dist/roots.d.ts +1 -1
- package/dist/roots.js +1 -1
- package/dist/roots.js.map +1 -1
- package/dist/runner.d.ts +3 -3
- package/dist/runner.js +3 -3
- package/dist/runner.js.map +1 -1
- package/dist/runs.d.ts +3 -3
- package/dist/runs.js +3 -3
- package/dist/schema-dialect.d.ts +2 -2
- package/dist/schema-dialect.js +2 -2
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/tmpdir.d.ts +3 -3
- package/dist/tmpdir.js +4 -4
- package/dist/tmpdir.js.map +1 -1
- package/dist/tools/analysis.js +3 -3
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/inspect.js +34 -13
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/prompts.d.ts +2 -2
- package/dist/tools/prompts.js +12 -12
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/shared.d.ts +2 -2
- package/dist/tools/shared.js +6 -6
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/writes.js +1 -1
- package/dist/tools/writes.js.map +1 -1
- package/dist/unmatched.d.ts +3 -3
- package/dist/unmatched.js +5 -5
- package/dist/unmatched.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/package.json +1 -1
package/dist/php.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
/** Env-variabele met het PHP-binary dat PHPStan op de host start. */
|
|
3
|
+
export declare const PHP_ENV_VAR = "PHPSTAN_MCP_PHP";
|
|
4
|
+
/**
|
|
5
|
+
* Het PHP-binary uit de serverconfiguratie, of undefined als er geen is ingesteld.
|
|
6
|
+
*
|
|
7
|
+
* Net als de runners nooit uit een tool-argument: wie het binary kiest, kiest wat er
|
|
8
|
+
* uitgevoerd wordt. Absoluut en bestaand, anders geweigerd met uitleg een kale naam
|
|
9
|
+
* laat spawn via PATH zoeken, en dan is niet meer te zien wélke PHP het werd.
|
|
10
|
+
*
|
|
11
|
+
* Een `.bat` of `.cmd` wordt geweigerd: Node start die niet zonder shell (EINVAL), en
|
|
12
|
+
* een shell is hier juist uitgesloten. Herd zet een `php.bat` op PATH, dus wie dat pad
|
|
13
|
+
* overneemt, krijgt hier een melding die naar de echte `php.exe` wijst.
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadPhpBinary(env?: NodeJS.ProcessEnv): string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Zoekt `php.exe` op PATH, zoals Windows dat zelf zou doen maar alleen de `.exe`.
|
|
18
|
+
* Een `php.bat` telt niet: die is zonder shell niet te starten, dus hem vinden en dan
|
|
19
|
+
* falen zou een slechtere melding opleveren dan hem niet vinden.
|
|
20
|
+
*
|
|
21
|
+
* De pad-API is een parameter, net als bij `naarOmgeving`: anders is dit alleen op
|
|
22
|
+
* Windows zelf te testen.
|
|
23
|
+
*/
|
|
24
|
+
export declare function findPhpOnPath(env?: NodeJS.ProcessEnv, host?: Pick<typeof path, 'join' | 'delimiter'>, exists?: (file: string) => boolean): string | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Welke PHP PHPStan op de host start: de ingestelde, anders op Windows `php.exe` van
|
|
27
|
+
* PATH, anders undefined en dan wordt `vendor/bin/phpstan` zelf gestart.
|
|
28
|
+
*/
|
|
29
|
+
export declare function hostPhp(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Hoe PHPStan op de host gestart wordt.
|
|
32
|
+
*
|
|
33
|
+
* `vendor/bin/phpstan` is een PHP-script met `#!/usr/bin/env php`. Op POSIX start de
|
|
34
|
+
* kernel dat zelf; Windows kent geen shebang, en spawn gaf daar `ENOENT` de server
|
|
35
|
+
* kon op Windows zonder runner geen enkele analyse starten. Composers eigen
|
|
36
|
+
* `phpstan.bat` doet `php "vendor/bin/phpstan" %*`, en dit is hetzelfde zonder de
|
|
37
|
+
* shell die een `.bat` nodig heeft: `shell: true` met argumenten uit een aanroep is op
|
|
38
|
+
* Windows een bekend lek in de quoting van cmd.exe.
|
|
39
|
+
*
|
|
40
|
+
* Een ingestelde PHP geldt op elk platform, zodat je er ook op macOS een bepaalde
|
|
41
|
+
* versie mee kunt kiezen.
|
|
42
|
+
*/
|
|
43
|
+
export declare function planHostStart(binary: string, php: string | undefined, platform?: NodeJS.Platform): {
|
|
44
|
+
file: string;
|
|
45
|
+
prefix: readonly string[];
|
|
46
|
+
};
|
package/dist/php.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { statSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fromConfig } from './config.js';
|
|
4
|
+
import { PhpstanError } from './phpstan/error.js';
|
|
5
|
+
/** Env-variabele met het PHP-binary dat PHPStan op de host start. */
|
|
6
|
+
export const PHP_ENV_VAR = 'PHPSTAN_MCP_PHP';
|
|
7
|
+
/** Het voorbeeld in elke melding: de plek waar Herd de echte php.exe neerzet. */
|
|
8
|
+
const VOORBEELD = 'C:\\Users\\you\\.config\\herd\\bin\\php85\\php.exe';
|
|
9
|
+
/**
|
|
10
|
+
* Het PHP-binary uit de serverconfiguratie, of undefined als er geen is ingesteld.
|
|
11
|
+
*
|
|
12
|
+
* Net als de runners nooit uit een tool-argument: wie het binary kiest, kiest wat er
|
|
13
|
+
* uitgevoerd wordt. Absoluut en bestaand, anders geweigerd met uitleg een kale naam
|
|
14
|
+
* laat spawn via PATH zoeken, en dan is niet meer te zien wélke PHP het werd.
|
|
15
|
+
*
|
|
16
|
+
* Een `.bat` of `.cmd` wordt geweigerd: Node start die niet zonder shell (EINVAL), en
|
|
17
|
+
* een shell is hier juist uitgesloten. Herd zet een `php.bat` op PATH, dus wie dat pad
|
|
18
|
+
* overneemt, krijgt hier een melding die naar de echte `php.exe` wijst.
|
|
19
|
+
*/
|
|
20
|
+
export function loadPhpBinary(env = process.env) {
|
|
21
|
+
const configured = (env[PHP_ENV_VAR] ?? fromConfig('php', env))?.trim();
|
|
22
|
+
if (configured === undefined || configured === '')
|
|
23
|
+
return undefined;
|
|
24
|
+
if (!path.isAbsolute(configured)) {
|
|
25
|
+
throw new PhpstanError(`${PHP_ENV_VAR} is set to "${configured}", which is not an absolute path. ` +
|
|
26
|
+
`Point it at the PHP binary itself, for example ${VOORBEELD}.`, 'invalid_setting');
|
|
27
|
+
}
|
|
28
|
+
if (/\.(bat|cmd)$/i.test(configured)) {
|
|
29
|
+
throw new PhpstanError(`${PHP_ENV_VAR} points to a batch file (${configured}), which cannot be started without ` +
|
|
30
|
+
`a shell. Point it at php.exe itself; with Herd that is for example ${VOORBEELD}.`, 'invalid_setting');
|
|
31
|
+
}
|
|
32
|
+
if (!isFile(configured)) {
|
|
33
|
+
throw new PhpstanError(`${PHP_ENV_VAR} is set to "${configured}", but that file does not exist.`, 'invalid_setting');
|
|
34
|
+
}
|
|
35
|
+
return configured;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Zoekt `php.exe` op PATH, zoals Windows dat zelf zou doen maar alleen de `.exe`.
|
|
39
|
+
* Een `php.bat` telt niet: die is zonder shell niet te starten, dus hem vinden en dan
|
|
40
|
+
* falen zou een slechtere melding opleveren dan hem niet vinden.
|
|
41
|
+
*
|
|
42
|
+
* De pad-API is een parameter, net als bij `naarOmgeving`: anders is dit alleen op
|
|
43
|
+
* Windows zelf te testen.
|
|
44
|
+
*/
|
|
45
|
+
export function findPhpOnPath(env = process.env, host = path, exists = isFile) {
|
|
46
|
+
// `process.env` is op Windows ongevoelig voor hoofdletters, een los object niet.
|
|
47
|
+
const dirs = (env['PATH'] ?? env['Path'] ?? '').split(host.delimiter);
|
|
48
|
+
for (const dir of dirs) {
|
|
49
|
+
const schoon = dir.trim().replace(/^"(.*)"$/, '$1');
|
|
50
|
+
if (schoon === '')
|
|
51
|
+
continue;
|
|
52
|
+
const kandidaat = host.join(schoon, 'php.exe');
|
|
53
|
+
if (exists(kandidaat))
|
|
54
|
+
return kandidaat;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Welke PHP PHPStan op de host start: de ingestelde, anders op Windows `php.exe` van
|
|
60
|
+
* PATH, anders undefined en dan wordt `vendor/bin/phpstan` zelf gestart.
|
|
61
|
+
*/
|
|
62
|
+
export function hostPhp(env = process.env, platform = process.platform) {
|
|
63
|
+
return loadPhpBinary(env) ?? (platform === 'win32' ? findPhpOnPath(env) : undefined);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Hoe PHPStan op de host gestart wordt.
|
|
67
|
+
*
|
|
68
|
+
* `vendor/bin/phpstan` is een PHP-script met `#!/usr/bin/env php`. Op POSIX start de
|
|
69
|
+
* kernel dat zelf; Windows kent geen shebang, en spawn gaf daar `ENOENT` de server
|
|
70
|
+
* kon op Windows zonder runner geen enkele analyse starten. Composers eigen
|
|
71
|
+
* `phpstan.bat` doet `php "vendor/bin/phpstan" %*`, en dit is hetzelfde zonder de
|
|
72
|
+
* shell die een `.bat` nodig heeft: `shell: true` met argumenten uit een aanroep is op
|
|
73
|
+
* Windows een bekend lek in de quoting van cmd.exe.
|
|
74
|
+
*
|
|
75
|
+
* Een ingestelde PHP geldt op elk platform, zodat je er ook op macOS een bepaalde
|
|
76
|
+
* versie mee kunt kiezen.
|
|
77
|
+
*/
|
|
78
|
+
export function planHostStart(binary, php, platform = process.platform) {
|
|
79
|
+
if (php !== undefined)
|
|
80
|
+
return { file: php, prefix: [binary] };
|
|
81
|
+
if (platform !== 'win32')
|
|
82
|
+
return { file: binary, prefix: [] };
|
|
83
|
+
throw new PhpstanError('PHPStan cannot be started on Windows without php.exe: vendor/bin/phpstan is a PHP script, ' +
|
|
84
|
+
'and Windows does not run it by itself. No php.exe was found on PATH (a php.bat, as Herd ' +
|
|
85
|
+
`installs, cannot be started without a shell). Set ${PHP_ENV_VAR} to the absolute path of php.exe.`, 'invalid_setting', { hint: `Set ${PHP_ENV_VAR} in the server configuration, for example to ${VOORBEELD}.` });
|
|
86
|
+
}
|
|
87
|
+
function isFile(file) {
|
|
88
|
+
try {
|
|
89
|
+
return statSync(file).isFile();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=php.js.map
|
package/dist/php.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.js","sourceRoot":"","sources":["../src/php.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qEAAqE;AACrE,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE7C,iFAAiF;AACjF,MAAM,SAAS,GAAG,oDAAoD,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB,OAAO,CAAC,GAAG;IAChE,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACxE,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAEpE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,YAAY,CACpB,GAAG,WAAW,eAAe,UAAU,oCAAoC;YACzE,kDAAkD,SAAS,GAAG,EAChE,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,YAAY,CACpB,GAAG,WAAW,4BAA4B,UAAU,qCAAqC;YACvF,sEAAsE,SAAS,GAAG,EACpF,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,YAAY,CAAC,GAAG,WAAW,eAAe,UAAU,kCAAkC,EAAE,iBAAiB,CAAC,CAAC;IACvH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAyB,OAAO,CAAC,GAAG,EACpC,OAAgD,IAAI,EACpD,SAAoC,MAAM;IAE1C,iFAAiF;IACjF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,EAAE;YAAE,SAAS;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC1C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,WAA4B,OAAO,CAAC,QAAQ;IACxG,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,GAAuB,EACvB,WAA4B,OAAO,CAAC,QAAQ;IAE5C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9D,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAE9D,MAAM,IAAI,YAAY,CACpB,4FAA4F;QAC1F,0FAA0F;QAC1F,qDAAqD,WAAW,mCAAmC,EACrG,iBAAiB,EACjB,EAAE,IAAI,EAAE,OAAO,WAAW,gDAAgD,SAAS,GAAG,EAAE,CACzF,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/phpstan/output.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export interface StderrInhoud {
|
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Haalt uit stderr wat het model moet weten bij een gelúkte analyse. Dit werd eerder
|
|
33
|
-
* helemaal weggegooid zodra de JSON parseerde
|
|
33
|
+
* helemaal weggegooid zodra de JSON parseerde en juist daar staat PHPStans
|
|
34
34
|
* "Result is incomplete because of severe errors.": geldige JSON die het project niet
|
|
35
35
|
* volledig dekt. Zonder deze regels leest een model een schone uitslag die dat niet is.
|
|
36
36
|
*
|
|
@@ -50,7 +50,7 @@ export interface Finding {
|
|
|
50
50
|
/** PHPStans eigen hint bij deze fout, als die er is. */
|
|
51
51
|
readonly tip: string | null;
|
|
52
52
|
}
|
|
53
|
-
/** Uitkomst van een geslaagde analyse
|
|
53
|
+
/** Uitkomst van een geslaagde analyse ook als er fouten gevonden zijn. */
|
|
54
54
|
export interface AnalysisResult {
|
|
55
55
|
readonly project: string;
|
|
56
56
|
readonly findings: readonly Finding[];
|
package/dist/phpstan/output.js
CHANGED
|
@@ -46,13 +46,13 @@ const HARMLESS_STDERR = [/^Note: /];
|
|
|
46
46
|
*
|
|
47
47
|
* Dat is geen waarschuwing maar begeleiding, en het is elke run dezelfde tekst.
|
|
48
48
|
* Het werd hiervoor als waarschuwing geteld, waarna de limiet van tien meldingen
|
|
49
|
-
* het middenin afkapte
|
|
49
|
+
* het middenin afkapte dertien regels, drie "weggelaten", en dus een half signaal
|
|
50
50
|
* waar niemand iets mee kon.
|
|
51
51
|
*/
|
|
52
52
|
const INSTRUCTIE_KOP = /^Instructions for interpreting errors/i;
|
|
53
53
|
/**
|
|
54
54
|
* Haalt uit stderr wat het model moet weten bij een gelúkte analyse. Dit werd eerder
|
|
55
|
-
* helemaal weggegooid zodra de JSON parseerde
|
|
55
|
+
* helemaal weggegooid zodra de JSON parseerde en juist daar staat PHPStans
|
|
56
56
|
* "Result is incomplete because of severe errors.": geldige JSON die het project niet
|
|
57
57
|
* volledig dekt. Zonder deze regels leest een model een schone uitslag die dat niet is.
|
|
58
58
|
*
|
|
@@ -101,7 +101,7 @@ export const MAX_DETAIL_CHARS = 2000;
|
|
|
101
101
|
const TIPS_KOP = /^\s*Tip: Try the following/i;
|
|
102
102
|
/**
|
|
103
103
|
* De regel waar de oorzaak staat. PHPStan zet die ná zijn generieke tips neer, en
|
|
104
|
-
* de stack trace erachter loopt van de oorzaak naar de opstartcode
|
|
104
|
+
* de stack trace erachter loopt van de oorzaak naar de opstartcode dus vanaf hier
|
|
105
105
|
* is de *kop* het antwoord en de staart plumbing.
|
|
106
106
|
*/
|
|
107
107
|
const OORZAAK = /^\s*(Error|Fatal error|PHP Fatal error):/i;
|
|
@@ -129,7 +129,7 @@ export function condenseDetails(text, max = MAX_DETAIL_CHARS) {
|
|
|
129
129
|
* binnen: regels uit verschillende kopieën door elkaar, buiten volgorde.
|
|
130
130
|
*
|
|
131
131
|
* Gemeten op een echt project: vier kopieën van dezelfde fout, 246 regels stderr.
|
|
132
|
-
* Dedupliceren gebeurt op de regel zónder naspaties
|
|
132
|
+
* Dedupliceren gebeurt op de regel zónder naspaties PHPStan omkadert zijn eerste
|
|
133
133
|
* regel met opvulling, waardoor twee kopieën anders niet identiek lijken.
|
|
134
134
|
*
|
|
135
135
|
* Verschilt de fout per worker, dan blijven die regels allebei staan: alleen exacte
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/phpstan/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACjE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC3E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC5B,CAAC,CAAC;AAIH;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/phpstan/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export interface EffectiveParameters {
|
|
|
16
16
|
/** Hoeveel negeerregels er in totaal meedoen: baseline én ignoreErrors uit elke config. */
|
|
17
17
|
readonly ignoreErrors: number;
|
|
18
18
|
readonly reportUnmatchedIgnoredErrors: boolean | null;
|
|
19
|
-
/** De map waar PHPStan zijn cache neerzet
|
|
19
|
+
/** De map waar PHPStan zijn cache neerzet dus wat clear_result_cache leegt. */
|
|
20
20
|
readonly tmpDir: string | null;
|
|
21
21
|
/** Bootstrap-bestanden van het project en zijn pakketten, zonder PHPStans eigen polyfills. */
|
|
22
22
|
readonly bootstrapFiles: readonly string[];
|
|
@@ -26,7 +26,7 @@ export interface EffectiveParameters {
|
|
|
26
26
|
*
|
|
27
27
|
* Nagemeten op 2.2: `dump-parameters --json` zet een baseline-patroon als `array\<int\>`
|
|
28
28
|
* neer, en `\<` is geen geldige escape. Bij elk project met zo'n baseline faalde
|
|
29
|
-
* `JSON.parse` daardoor
|
|
29
|
+
* `JSON.parse` daardoor ook al is de exit code 0. Een ongeldige escape wordt hier een
|
|
30
30
|
* letterlijke backslash. Per paar gelezen en niet met een losse vervanging: dan blijft een
|
|
31
31
|
* geldige `\\` gewoon één backslash.
|
|
32
32
|
*/
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Nagemeten op 2.2: `dump-parameters --json` zet een baseline-patroon als `array\<int\>`
|
|
5
5
|
* neer, en `\<` is geen geldige escape. Bij elk project met zo'n baseline faalde
|
|
6
|
-
* `JSON.parse` daardoor
|
|
6
|
+
* `JSON.parse` daardoor ook al is de exit code 0. Een ongeldige escape wordt hier een
|
|
7
7
|
* letterlijke backslash. Per paar gelezen en niet met een losse vervanging: dan blijft een
|
|
8
8
|
* geldige `\\` gewoon één backslash.
|
|
9
9
|
*/
|
|
@@ -14,11 +14,22 @@ export interface Execution {
|
|
|
14
14
|
* output af op maxBuffer (1 MB), en de JSON van een groot project gaat daar
|
|
15
15
|
* ruim overheen.
|
|
16
16
|
*
|
|
17
|
-
* `detached
|
|
17
|
+
* Op POSIX maakt `detached` het proces leider van een eigen procesgroep, zodat een
|
|
18
18
|
* timeout de héle groep kan doden. Zonder dat blijven PHPStans parallelle workers
|
|
19
|
-
* na een timeout gewoon doorrekenen.
|
|
19
|
+
* na een timeout gewoon doorrekenen. Op Windows niet: zie `startsOwnGroup`.
|
|
20
20
|
*/
|
|
21
21
|
export declare function execute(binary: string, args: readonly string[], cwd: string, timeoutMs: number, signal: AbortSignal | undefined): Promise<Execution>;
|
|
22
|
+
/**
|
|
23
|
+
* Of PHPStan in een eigen procesgroep start, met `detached`.
|
|
24
|
+
*
|
|
25
|
+
* Op Windows niet. Daar betekent `detached` DETACHED_PROCESS: php.exe krijgt géén
|
|
26
|
+
* console, en dan krijgt elk console-programma dat het zelf start een nieuw, zichtbaar
|
|
27
|
+
* venster de xdebug-restart en elke parallelle worker. `windowsHide` gaat niet over op
|
|
28
|
+
* die kleinkinderen. Nagemeten met een kleinkind via `proc_open`: detached gaf een
|
|
29
|
+
* zichtbaar venster, zonder detached geen enkel. Een eigen groep is daar ook niet nodig:
|
|
30
|
+
* `taskkill /T` ruimt de boom op via het pid (zie `planKill`).
|
|
31
|
+
*/
|
|
32
|
+
export declare function startsOwnGroup(platform?: NodeJS.Platform): boolean;
|
|
22
33
|
/** Hoe een procesgroep op dit platform opgeruimd wordt. */
|
|
23
34
|
export type KillPlan = {
|
|
24
35
|
readonly kind: 'signaal';
|
|
@@ -32,18 +43,18 @@ export type KillPlan = {
|
|
|
32
43
|
/**
|
|
33
44
|
* Bepaalt hoe de procesgroep van `pid` gedood wordt. Als plan teruggegeven en niet
|
|
34
45
|
* meteen uitgevoerd, want anders is de Windows-tak niet te testen op een machine
|
|
35
|
-
* waar je hem niet kunt uitvoeren
|
|
46
|
+
* waar je hem niet kunt uitvoeren en juist die tak was stuk.
|
|
36
47
|
*/
|
|
37
48
|
export declare function planKill(pid: number, signal: NodeJS.Signals, platform?: NodeJS.Platform): KillPlan;
|
|
38
49
|
/**
|
|
39
50
|
* Voert een plan uit `planKill` uit. Los daarvan, zodat ook het *uitvoeren* van de
|
|
40
51
|
* Windows-tak te testen is: met een commando dat niet bestaat, een dat faalt, en een
|
|
41
|
-
* dat met 128 eindigt
|
|
52
|
+
* dat met 128 eindigt de exit code van taskkill voor een proces dat al weg is.
|
|
42
53
|
*/
|
|
43
54
|
export declare function carryOutKill(pid: number, plan: KillPlan): void;
|
|
44
55
|
/**
|
|
45
56
|
* Of een mislukte kill het melden waard is. `ESRCH` betekent dat de groep al weg
|
|
46
|
-
* is
|
|
57
|
+
* is de race tussen de timer en deze aanroep, en precies de gewenste uitkomst.
|
|
47
58
|
* Alles anders wél melden: de vorige versie slikte élke fout en verborg daarmee dat
|
|
48
59
|
* een negatieve pid op Windows niet eens bestaat.
|
|
49
60
|
*/
|
package/dist/phpstan/process.js
CHANGED
|
@@ -7,9 +7,9 @@ const KILL_GRACE_MS = 5_000;
|
|
|
7
7
|
* output af op maxBuffer (1 MB), en de JSON van een groot project gaat daar
|
|
8
8
|
* ruim overheen.
|
|
9
9
|
*
|
|
10
|
-
* `detached
|
|
10
|
+
* Op POSIX maakt `detached` het proces leider van een eigen procesgroep, zodat een
|
|
11
11
|
* timeout de héle groep kan doden. Zonder dat blijven PHPStans parallelle workers
|
|
12
|
-
* na een timeout gewoon doorrekenen.
|
|
12
|
+
* na een timeout gewoon doorrekenen. Op Windows niet: zie `startsOwnGroup`.
|
|
13
13
|
*/
|
|
14
14
|
export function execute(binary, args, cwd, timeoutMs, signal) {
|
|
15
15
|
return new Promise((resolve) => {
|
|
@@ -17,13 +17,15 @@ export function execute(binary, args, cwd, timeoutMs, signal) {
|
|
|
17
17
|
const child = spawn(binary, args, {
|
|
18
18
|
cwd,
|
|
19
19
|
shell: false,
|
|
20
|
-
detached:
|
|
20
|
+
detached: startsOwnGroup(),
|
|
21
|
+
// Zonder console-venster op Windows; op POSIX doet de optie niets.
|
|
22
|
+
windowsHide: true,
|
|
21
23
|
// PAO_DISABLE hoort bij --no-progress en --no-ansi: allemaal om PHPStans
|
|
22
24
|
// eigen, machineleesbare uitvoer te krijgen. laravel/pao hangt zich via
|
|
23
25
|
// autoload.files in de autoloader van het project, ziet aan variabelen als
|
|
24
26
|
// CLAUDECODE dat er een agent draait, en vervangt de uitvoer dan door zijn
|
|
25
27
|
// eigen formaat ({"tool":"phpstan","result":"passed"}). Dat parseert hier
|
|
26
|
-
// niet, dus zonder deze regel is zo'n project onanalyseerbaar
|
|
28
|
+
// niet, dus zonder deze regel is zo'n project onanalyseerbaar en de server
|
|
27
29
|
// erft die agent-variabelen juist altijd, want de client start hem.
|
|
28
30
|
//
|
|
29
31
|
// De tmpdir-variabelen komen uit de projectroot (die is hier de cwd), zodat
|
|
@@ -73,7 +75,7 @@ export function execute(binary, args, cwd, timeoutMs, signal) {
|
|
|
73
75
|
// Normaal wachten we op 'close': dan is alle output binnen.
|
|
74
76
|
child.on('close', finish);
|
|
75
77
|
// Maar bij een timeout wordt alleen het proces zelf gedood, terwijl zijn
|
|
76
|
-
// kleinkinderen
|
|
78
|
+
// kleinkinderen PHPStan draait parallelle workers de pipes openhouden.
|
|
77
79
|
// 'close' komt dan pas als die klaar zijn, en dan is de timeout geen timeout
|
|
78
80
|
// meer. Zodra het proces zelf door een signaal is gestopt, heeft wachten op
|
|
79
81
|
// meer output geen zin.
|
|
@@ -83,10 +85,23 @@ export function execute(binary, args, cwd, timeoutMs, signal) {
|
|
|
83
85
|
});
|
|
84
86
|
});
|
|
85
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Of PHPStan in een eigen procesgroep start, met `detached`.
|
|
90
|
+
*
|
|
91
|
+
* Op Windows niet. Daar betekent `detached` DETACHED_PROCESS: php.exe krijgt géén
|
|
92
|
+
* console, en dan krijgt elk console-programma dat het zelf start een nieuw, zichtbaar
|
|
93
|
+
* venster de xdebug-restart en elke parallelle worker. `windowsHide` gaat niet over op
|
|
94
|
+
* die kleinkinderen. Nagemeten met een kleinkind via `proc_open`: detached gaf een
|
|
95
|
+
* zichtbaar venster, zonder detached geen enkel. Een eigen groep is daar ook niet nodig:
|
|
96
|
+
* `taskkill /T` ruimt de boom op via het pid (zie `planKill`).
|
|
97
|
+
*/
|
|
98
|
+
export function startsOwnGroup(platform = process.platform) {
|
|
99
|
+
return platform !== 'win32';
|
|
100
|
+
}
|
|
86
101
|
/**
|
|
87
102
|
* Bepaalt hoe de procesgroep van `pid` gedood wordt. Als plan teruggegeven en niet
|
|
88
103
|
* meteen uitgevoerd, want anders is de Windows-tak niet te testen op een machine
|
|
89
|
-
* waar je hem niet kunt uitvoeren
|
|
104
|
+
* waar je hem niet kunt uitvoeren en juist die tak was stuk.
|
|
90
105
|
*/
|
|
91
106
|
export function planKill(pid, signal, platform = process.platform) {
|
|
92
107
|
// Een negatieve pid als groeps-id is POSIX; op Windows bestaat dat niet en
|
|
@@ -112,12 +127,12 @@ function killGroup(pid, signal) {
|
|
|
112
127
|
/**
|
|
113
128
|
* Voert een plan uit `planKill` uit. Los daarvan, zodat ook het *uitvoeren* van de
|
|
114
129
|
* Windows-tak te testen is: met een commando dat niet bestaat, een dat faalt, en een
|
|
115
|
-
* dat met 128 eindigt
|
|
130
|
+
* dat met 128 eindigt de exit code van taskkill voor een proces dat al weg is.
|
|
116
131
|
*/
|
|
117
132
|
export function carryOutKill(pid, plan) {
|
|
118
133
|
if (plan.kind === 'commando') {
|
|
119
134
|
// Fire-and-forget: dit loopt in een timer en mag de event loop niet blokkeren.
|
|
120
|
-
const killer = spawn(plan.command, [...plan.args], { shell: false, stdio: 'ignore' });
|
|
135
|
+
const killer = spawn(plan.command, [...plan.args], { shell: false, stdio: 'ignore', windowsHide: true });
|
|
121
136
|
killer.on('error', (error) => { reportKillFailure(pid, error); });
|
|
122
137
|
killer.on('exit', (code) => {
|
|
123
138
|
if (code !== 0 && code !== TASKKILL_NOT_FOUND) {
|
|
@@ -136,7 +151,7 @@ export function carryOutKill(pid, plan) {
|
|
|
136
151
|
}
|
|
137
152
|
/**
|
|
138
153
|
* Of een mislukte kill het melden waard is. `ESRCH` betekent dat de groep al weg
|
|
139
|
-
* is
|
|
154
|
+
* is de race tussen de timer en deze aanroep, en precies de gewenste uitkomst.
|
|
140
155
|
* Alles anders wél melden: de vorige versie slikte élke fout en verborg daarmee dat
|
|
141
156
|
* een negatieve pid op Windows niet eens bestaat.
|
|
142
157
|
*/
|
|
@@ -145,7 +160,7 @@ export function isReportableKillError(error) {
|
|
|
145
160
|
}
|
|
146
161
|
/**
|
|
147
162
|
* Meldt dat het opruimen niet gelukt is. Naar stderr, want bij stdio-transport is
|
|
148
|
-
* stdout het protocol
|
|
163
|
+
* stdout het protocol en niet gooien: dit loopt in een timer, waar een exception
|
|
149
164
|
* de hele server omhaalt.
|
|
150
165
|
*/
|
|
151
166
|
function reportKillFailure(pid, error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/phpstan/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAezC,4EAA4E;AAC5E,MAAM,aAAa,GAAG,KAAK,CAAC;AAE5B;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,IAAuB,EACvB,GAAW,EACX,SAAiB,EACjB,MAA+B;IAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,oEAAoE;QACpE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE;YAChC,GAAG;YACH,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/phpstan/process.ts"],"names":[],"mappings":"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"}
|
package/dist/phpstan/queue.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export declare const MAX_PARALLEL_ENV_VAR = "PHPSTAN_MCP_MAX_PARALLEL";
|
|
3
3
|
/**
|
|
4
4
|
* Leest hoeveel analyses tegelijk mogen draaien. Een onbruikbare waarde wordt
|
|
5
|
-
* geweigerd en niet stil vervangen door de standaard
|
|
5
|
+
* geweigerd en niet stil vervangen door de standaard net als bij de
|
|
6
6
|
* geheugenlimiet: wie dit zet, heeft er iets mee bedoeld.
|
|
7
7
|
*/
|
|
8
8
|
export declare function loadMaxParallel(env?: NodeJS.ProcessEnv): number;
|
package/dist/phpstan/queue.js
CHANGED
|
@@ -6,12 +6,12 @@ export const MAX_PARALLEL_ENV_VAR = 'PHPSTAN_MCP_MAX_PARALLEL';
|
|
|
6
6
|
* Twee tegelijk. De queue per project bestond al voor de resultcache, maar over
|
|
7
7
|
* projecten heen begrensde niets: een model dat na list_projects tien projecten
|
|
8
8
|
* aanroept, start tien PHPStan-processen die elk hun eigen parallelle workers
|
|
9
|
-
* opzetten
|
|
9
|
+
* opzetten en met een geheugenlimiet van 2G is dat tien keer dat plafond.
|
|
10
10
|
*/
|
|
11
11
|
const DEFAULT_MAX_PARALLEL = 2;
|
|
12
12
|
/**
|
|
13
13
|
* Leest hoeveel analyses tegelijk mogen draaien. Een onbruikbare waarde wordt
|
|
14
|
-
* geweigerd en niet stil vervangen door de standaard
|
|
14
|
+
* geweigerd en niet stil vervangen door de standaard net als bij de
|
|
15
15
|
* geheugenlimiet: wie dit zet, heeft er iets mee bedoeld.
|
|
16
16
|
*/
|
|
17
17
|
export function loadMaxParallel(env = process.env) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/phpstan/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/phpstan/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAElE,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAEzF,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,oBAAoB,CAAC;IAE/E,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,YAAY,CACpB,GAAG,oBAAoB,eAAe,UAAU,kDAAkD;YAChG,iCAAiC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CACpE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qEAAqE;AACrE,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,MAAM,OAAO,GAAmB,EAAE,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAsB;IACtD,gFAAgF;IAChF,yDAAyD;IACzD,OAAO,OAAO,IAAI,eAAe,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,IAAI,CAAC,CAAC;IAEb,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,OAAO,IAAI,CAAC,CAAC;QACb,uEAAuE;QACvE,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,MAA+B;IAC7E,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,YAAY,CAAC,mBAAmB,OAAO,2DAA2D,CAAC,CAAC;IAChH,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAI,GAAW,EAAE,IAAsB;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACtD,iFAAiF;IACjF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAE3C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAClB,sEAAsE;QACtE,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/phpstan.d.ts
CHANGED
|
@@ -69,7 +69,7 @@ export interface BaselineGenerated {
|
|
|
69
69
|
* Laat PHPStan een baseline schrijven: alle huidige fouten worden erin gezet, zodat
|
|
70
70
|
* een volgende analyse alleen meldt wat er nieuw bij komt.
|
|
71
71
|
*
|
|
72
|
-
* Dit schrijft een bestand in het project
|
|
72
|
+
* Dit schrijft een bestand in het project de enige tool die dat doet, en daarom
|
|
73
73
|
* alleen bereikbaar als de server met schrijfrechten gestart is.
|
|
74
74
|
*/
|
|
75
75
|
export declare function generateBaseline(project: ResolvedProject, options: GenerateBaselineOptions): Promise<BaselineGenerated>;
|
|
@@ -78,7 +78,7 @@ export declare function generateBaseline(project: ResolvedProject, options: Gene
|
|
|
78
78
|
* draait, en geeft het pad dáár terug.
|
|
79
79
|
*
|
|
80
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
|
|
81
|
+
* van het bestand): een bestand op de host ziet een container niet alleen de
|
|
82
82
|
* projectmap is gemount. Het ín het project
|
|
83
83
|
* zetten zou wel werken, maar dan schrijft een read-only tool in de repository. Gemeten
|
|
84
84
|
* in een echte container: PHPStan leest geen config van stdin (`/dev/stdin` en
|
|
@@ -90,7 +90,7 @@ export declare function writeInRunner(project: ResolvedProject, name: string, co
|
|
|
90
90
|
/**
|
|
91
91
|
* Draait `phpstan diagnose` in één project: PHP- en PHPStan-versie, de configs die
|
|
92
92
|
* Composer-pakketten meebrengen, en of de turbo-extensie aanstaat. Geen analyse, dus
|
|
93
|
-
* geen bevindingen
|
|
93
|
+
* geen bevindingen dit is wat je wil weten als een project zich vreemd gedraagt.
|
|
94
94
|
*
|
|
95
95
|
* Wel door de semafoor en niet door de queue per project: dit is een PHPStan-proces
|
|
96
96
|
* dat de machine belast, maar het schrijft geen resultcache waar een analyse
|
|
@@ -116,7 +116,7 @@ export interface EditedFile {
|
|
|
116
116
|
/**
|
|
117
117
|
* Het hele project analyseren (de `paths` uit de config) in plaats van alleen dit bestand.
|
|
118
118
|
* Voor het "vóór" van `analyse_changed`: de aanroepers staan in andere bestanden. Dan moet
|
|
119
|
-
* het bestand wel binnen die `paths` vallen
|
|
119
|
+
* het bestand wel binnen die `paths` vallen anders weigert PHPStan het (nagemeten).
|
|
120
120
|
*/
|
|
121
121
|
readonly wholeProject?: boolean;
|
|
122
122
|
}
|
|
@@ -139,7 +139,7 @@ export declare function tmpCopyName(project: string, kind: string): string;
|
|
|
139
139
|
* resultcache niet weg; hij gaat toch door de queue, want hij leest hem wel.
|
|
140
140
|
*
|
|
141
141
|
* De kopie komt in de tijdelijke map van het project, met een runner in die van díe
|
|
142
|
-
* omgeving
|
|
142
|
+
* omgeving dezelfde weg als de config van `unmatched_ignores`. Op de host wordt hij na
|
|
143
143
|
* afloop weggegooid; in een runner blijft hij staan en overschrijft de volgende aanroep
|
|
144
144
|
* hem, zodat er per project en proces hoogstens één blijft liggen.
|
|
145
145
|
*/
|
|
@@ -148,7 +148,7 @@ export declare function analyseEdited(project: ResolvedProject, edited: EditedFi
|
|
|
148
148
|
* Leest de standaard geheugenlimiet uit de omgeving. Een onbruikbare waarde wordt
|
|
149
149
|
* hier al geweigerd en niet aan PHPStan doorgegeven: die zou er per analyse op
|
|
150
150
|
* klappen met een melding die "memory limit" bevat, waarna describeFailure het
|
|
151
|
-
* model aanraadt een limiet mee te geven
|
|
151
|
+
* model aanraadt een limiet mee te geven precies het verkeerde advies, want de
|
|
152
152
|
* fout zit in de serverconfiguratie en niet in de aanroep.
|
|
153
153
|
*/
|
|
154
154
|
export declare function loadDefaultMemoryLimit(env?: NodeJS.ProcessEnv): string | undefined;
|