phpstan-mcp-mx 0.21.1 → 0.23.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 +128 -79
- package/dist/baseline.d.ts +1 -1
- package/dist/baseline.js +27 -15
- package/dist/baseline.js.map +1 -1
- package/dist/changed.d.ts +5 -5
- package/dist/changed.js +68 -35
- package/dist/changed.js.map +1 -1
- package/dist/compare.d.ts +3 -3
- package/dist/compare.js +14 -8
- package/dist/compare.js.map +1 -1
- package/dist/composer.d.ts +2 -2
- package/dist/composer.js +49 -27
- package/dist/composer.js.map +1 -1
- package/dist/config.d.ts +4 -3
- package/dist/config.js +11 -7
- package/dist/config.js.map +1 -1
- package/dist/defaults.d.ts +1 -1
- package/dist/defaults.js +3 -2
- package/dist/defaults.js.map +1 -1
- package/dist/dumptype.d.ts +1 -1
- package/dist/dumptype.js +20 -12
- package/dist/dumptype.js.map +1 -1
- package/dist/failure.d.ts +2 -2
- package/dist/failure.js.map +1 -1
- package/dist/index.js +27 -4
- package/dist/index.js.map +1 -1
- package/dist/php.d.ts +46 -0
- package/dist/php.js +100 -0
- package/dist/php.js.map +1 -0
- package/dist/phpstan/error.js.map +1 -1
- package/dist/phpstan/output.d.ts +2 -2
- package/dist/phpstan/output.js +16 -10
- 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/parameters.js.map +1 -1
- package/dist/phpstan/process.d.ts +16 -5
- package/dist/phpstan/process.js +48 -19
- package/dist/phpstan/process.js.map +1 -1
- package/dist/phpstan/queue.d.ts +1 -1
- package/dist/phpstan/queue.js +6 -4
- package/dist/phpstan/queue.js.map +1 -1
- package/dist/phpstan.d.ts +6 -6
- package/dist/phpstan.js +51 -31
- package/dist/phpstan.js.map +1 -1
- package/dist/project.d.ts +7 -3
- package/dist/project.js +60 -21
- package/dist/project.js.map +1 -1
- package/dist/report.d.ts +5 -5
- package/dist/report.js +47 -28
- package/dist/report.js.map +1 -1
- package/dist/root-source.d.ts +43 -0
- package/dist/root-source.js +124 -0
- package/dist/root-source.js.map +1 -0
- package/dist/roots.d.ts +13 -1
- package/dist/roots.js +24 -7
- package/dist/roots.js.map +1 -1
- package/dist/runner.d.ts +3 -3
- package/dist/runner.js +17 -10
- package/dist/runner.js.map +1 -1
- package/dist/runs.d.ts +3 -3
- package/dist/runs.js +9 -6
- package/dist/runs.js.map +1 -1
- package/dist/schema-dialect.d.ts +2 -2
- package/dist/schema-dialect.js +8 -5
- package/dist/schema-dialect.js.map +1 -1
- package/dist/server.d.ts +3 -2
- package/dist/server.js +10 -6
- package/dist/server.js.map +1 -1
- package/dist/tmpdir.d.ts +3 -3
- package/dist/tmpdir.js +10 -7
- package/dist/tmpdir.js.map +1 -1
- package/dist/tools/analysis.d.ts +4 -4
- package/dist/tools/analysis.js +7 -5
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/inspect.d.ts +7 -7
- package/dist/tools/inspect.js +111 -45
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/prompts.d.ts +5 -5
- package/dist/tools/prompts.js +15 -15
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/shared.d.ts +4 -4
- package/dist/tools/shared.js +13 -11
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/writes.d.ts +3 -3
- package/dist/tools/writes.js +4 -4
- package/dist/tools/writes.js.map +1 -1
- package/dist/tools.d.ts +2 -2
- package/dist/tools.js +2 -1
- package/dist/tools.js.map +1 -1
- package/dist/unmatched.d.ts +3 -3
- package/dist/unmatched.js +35 -20
- package/dist/unmatched.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
package/dist/dumptype.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dumptype.js","sourceRoot":"","sources":["../src/dumptype.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvE,yDAAyD;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,6FAA6F;AAC7F,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,4DAA4D;AAC5D,MAAM,MAAM,GAAG,eAAe,CAAC;AAiD/B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAwB,EACxB,OAAoB,EACpB,UAAmF,EAAE;
|
|
1
|
+
{"version":3,"file":"dumptype.js","sourceRoot":"","sources":["../src/dumptype.ts"],"names":[],"mappings":"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"}
|
package/dist/failure.d.ts
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Het faalpad gaf tot nu toe alleen proza: één Nederlandse zin plus een blob ruwe
|
|
5
5
|
* tekst. Een aanroeper kon daaruit niet aflezen wát voor soort mislukking het was —
|
|
6
|
-
* ligt het aan het project, aan deze server, of aan de aanroep zelf
|
|
6
|
+
* ligt het aan het project, aan deze server, of aan de aanroep zelf en moest dus
|
|
7
7
|
* op woorden gaan matchen.
|
|
8
8
|
*
|
|
9
9
|
* Met een code uit deze lijst kan een aanroeper zelf herstellen: bij
|
|
10
10
|
* `bootstrap_failed` uitwijken naar een omgeving waar de applicatie wél start, bij
|
|
11
11
|
* `config_missing` om paden vragen, bij `timeout` opnieuw met meer tijd. Breid deze
|
|
12
|
-
* lijst uit met beleid, niet met vrije tekst
|
|
12
|
+
* lijst uit met beleid, niet met vrije tekst een code die maar één keer voorkomt
|
|
13
13
|
* helpt niemand.
|
|
14
14
|
*/
|
|
15
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';
|
package/dist/failure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AA2DA;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AA2DA;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACE;IAAgC;IAAtE,YAAY,OAAe,EAAW,MAAqB,EAAW,UAA0B,EAAE;QAEhG,KAAK,CAAC,OAAO,CAAC,CAAC;QAFqB,WAAM,GAAN,MAAM,CAAe;QAAW,YAAO,GAAP,OAAO,CAAqB;IAGlG,CAAC;CACF"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
3
|
import { loadProjectDefaults } from './defaults.js';
|
|
4
|
+
import { PHP_ENV_VAR, hostPhp } from './php.js';
|
|
4
5
|
import { loadDefaultMemoryLimit, loadMaxParallel } from './phpstan.js';
|
|
5
6
|
import { loadTmpDirMode } from './tmpdir.js';
|
|
6
7
|
import { WRITES_ENV_VAR, writesAllowed } from './tools/writes.js';
|
|
@@ -12,15 +13,36 @@ async function main() {
|
|
|
12
13
|
const roots = loadRoots();
|
|
13
14
|
const server = createServer(roots);
|
|
14
15
|
// stdio: het protocol zelf loopt over stdout. Alles wat deze server logt moet
|
|
15
|
-
// daarom naar stderr
|
|
16
|
+
// daarom naar stderr één console.log breekt de JSON-RPC-stroom.
|
|
16
17
|
await server.connect(new StdioServerTransport());
|
|
17
|
-
console.error(`phpstan-mcp ${VERSION} listening on stdio,
|
|
18
|
+
console.error(`phpstan-mcp ${VERSION} listening on stdio, ` +
|
|
19
|
+
(roots.length === 0 ? "no roots configured, so the client's directories (MCP roots) are in scope" : `${roots.length} root(s) configured`) +
|
|
18
20
|
describeMemoryDefault() +
|
|
19
21
|
describeMaxParallel() +
|
|
20
22
|
describeTmpDir() +
|
|
21
23
|
describeWrites() +
|
|
24
|
+
describePhp() +
|
|
22
25
|
describeProjectDefaults());
|
|
23
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Welke PHP PHPStan start, alleen als dat niet vanzelf gaat. Op Windows zonder php.exe
|
|
29
|
+
* een WARNING: dan start geen enkel project zonder runner, en het clientlog is waar je
|
|
30
|
+
* dat het eerst ziet.
|
|
31
|
+
*/
|
|
32
|
+
function describePhp() {
|
|
33
|
+
try {
|
|
34
|
+
const php = hostPhp();
|
|
35
|
+
if (php !== undefined) {
|
|
36
|
+
return `, PHP ${php}`;
|
|
37
|
+
}
|
|
38
|
+
return process.platform === 'win32'
|
|
39
|
+
? `, WARNING: no php.exe found on PATH; set ${PHP_ENV_VAR} or PHPStan cannot start`
|
|
40
|
+
: '';
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return `, WARNING: ${error instanceof Error ? error.message : String(error)}`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
24
46
|
/**
|
|
25
47
|
* Hoeveel projecten eigen standaarden hebben. Een kapotte waarde is net als bij de
|
|
26
48
|
* geheugenlimiet niet fataal: projecten zonder standaard werken gewoon, en een
|
|
@@ -59,8 +81,9 @@ function describeTmpDir() {
|
|
|
59
81
|
* en doet niets.
|
|
60
82
|
*/
|
|
61
83
|
function describeWrites() {
|
|
62
|
-
if (writesAllowed())
|
|
84
|
+
if (writesAllowed()) {
|
|
63
85
|
return ', writing tools on';
|
|
86
|
+
}
|
|
64
87
|
const configured = process.env[WRITES_ENV_VAR]?.trim();
|
|
65
88
|
return configured === undefined || configured === ''
|
|
66
89
|
? ''
|
|
@@ -85,7 +108,7 @@ function describeMemoryDefault() {
|
|
|
85
108
|
}
|
|
86
109
|
}
|
|
87
110
|
main().catch((error) => {
|
|
88
|
-
// Een ToolFailure is een fout waar de gebruiker iets aan kan doen
|
|
111
|
+
// Een ToolFailure is een fout waar de gebruiker iets aan kan doen meestal een
|
|
89
112
|
// instelling die niet klopt. Dan is de melding genoeg; de stack erbij maakt het
|
|
90
113
|
// alleen moeilijker te lezen in een clientlog.
|
|
91
114
|
console.error('phpstan-mcp could not start:', error instanceof ToolFailure ? error.message : error);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,KAAK,UAAU,IAAI;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
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,100 @@
|
|
|
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
|
+
}
|
|
25
|
+
if (!path.isAbsolute(configured)) {
|
|
26
|
+
throw new PhpstanError(`${PHP_ENV_VAR} is set to "${configured}", which is not an absolute path. ` +
|
|
27
|
+
`Point it at the PHP binary itself, for example ${VOORBEELD}.`, 'invalid_setting');
|
|
28
|
+
}
|
|
29
|
+
if (/\.(bat|cmd)$/i.test(configured)) {
|
|
30
|
+
throw new PhpstanError(`${PHP_ENV_VAR} points to a batch file (${configured}), which cannot be started without ` +
|
|
31
|
+
`a shell. Point it at php.exe itself; with Herd that is for example ${VOORBEELD}.`, 'invalid_setting');
|
|
32
|
+
}
|
|
33
|
+
if (!isFile(configured)) {
|
|
34
|
+
throw new PhpstanError(`${PHP_ENV_VAR} is set to "${configured}", but that file does not exist.`, 'invalid_setting');
|
|
35
|
+
}
|
|
36
|
+
return configured;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Zoekt `php.exe` op PATH, zoals Windows dat zelf zou doen maar alleen de `.exe`.
|
|
40
|
+
* Een `php.bat` telt niet: die is zonder shell niet te starten, dus hem vinden en dan
|
|
41
|
+
* falen zou een slechtere melding opleveren dan hem niet vinden.
|
|
42
|
+
*
|
|
43
|
+
* De pad-API is een parameter, net als bij `naarOmgeving`: anders is dit alleen op
|
|
44
|
+
* Windows zelf te testen.
|
|
45
|
+
*/
|
|
46
|
+
export function findPhpOnPath(env = process.env, host = path, exists = isFile) {
|
|
47
|
+
// `process.env` is op Windows ongevoelig voor hoofdletters, een los object niet.
|
|
48
|
+
const dirs = (env['PATH'] ?? env['Path'] ?? '').split(host.delimiter);
|
|
49
|
+
for (const dir of dirs) {
|
|
50
|
+
const schoon = dir.trim().replace(/^"(.*)"$/, '$1');
|
|
51
|
+
if (schoon === '') {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const kandidaat = host.join(schoon, 'php.exe');
|
|
55
|
+
if (exists(kandidaat)) {
|
|
56
|
+
return kandidaat;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Welke PHP PHPStan op de host start: de ingestelde, anders op Windows `php.exe` van
|
|
63
|
+
* PATH, anders undefined en dan wordt `vendor/bin/phpstan` zelf gestart.
|
|
64
|
+
*/
|
|
65
|
+
export function hostPhp(env = process.env, platform = process.platform) {
|
|
66
|
+
return loadPhpBinary(env) ?? (platform === 'win32' ? findPhpOnPath(env) : undefined);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Hoe PHPStan op de host gestart wordt.
|
|
70
|
+
*
|
|
71
|
+
* `vendor/bin/phpstan` is een PHP-script met `#!/usr/bin/env php`. Op POSIX start de
|
|
72
|
+
* kernel dat zelf; Windows kent geen shebang, en spawn gaf daar `ENOENT` de server
|
|
73
|
+
* kon op Windows zonder runner geen enkele analyse starten. Composers eigen
|
|
74
|
+
* `phpstan.bat` doet `php "vendor/bin/phpstan" %*`, en dit is hetzelfde zonder de
|
|
75
|
+
* shell die een `.bat` nodig heeft: `shell: true` met argumenten uit een aanroep is op
|
|
76
|
+
* Windows een bekend lek in de quoting van cmd.exe.
|
|
77
|
+
*
|
|
78
|
+
* Een ingestelde PHP geldt op elk platform, zodat je er ook op macOS een bepaalde
|
|
79
|
+
* versie mee kunt kiezen.
|
|
80
|
+
*/
|
|
81
|
+
export function planHostStart(binary, php, platform = process.platform) {
|
|
82
|
+
if (php !== undefined) {
|
|
83
|
+
return { file: php, prefix: [binary] };
|
|
84
|
+
}
|
|
85
|
+
if (platform !== 'win32') {
|
|
86
|
+
return { file: binary, prefix: [] };
|
|
87
|
+
}
|
|
88
|
+
throw new PhpstanError('PHPStan cannot be started on Windows without php.exe: vendor/bin/phpstan is a PHP script, ' +
|
|
89
|
+
'and Windows does not run it by itself. No php.exe was found on PATH (a php.bat, as Herd ' +
|
|
90
|
+
`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}.` });
|
|
91
|
+
}
|
|
92
|
+
function isFile(file) {
|
|
93
|
+
try {
|
|
94
|
+
return statSync(file).isFile();
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# 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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/phpstan/error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C;;;;;GAKG;AACH,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,YAAY,OAAe,EAAE,SAAwB,gBAAgB,EAAE,UAA0B,EAAE;
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/phpstan/error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C;;;;;GAKG;AACH,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,YAAY,OAAe,EAAE,SAAwB,gBAAgB,EAAE,UAA0B,EAAE;QAEjG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;CACF"}
|
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
|
@@ -16,8 +16,9 @@ const outputSchema = z.object({
|
|
|
16
16
|
* associatieve array nu eenmaal als JSON-array.
|
|
17
17
|
*/
|
|
18
18
|
export function tryParse(stdout) {
|
|
19
|
-
if (stdout.trim() === '')
|
|
19
|
+
if (stdout.trim() === '') {
|
|
20
20
|
return null;
|
|
21
|
+
}
|
|
21
22
|
let raw;
|
|
22
23
|
try {
|
|
23
24
|
raw = JSON.parse(stdout);
|
|
@@ -46,13 +47,13 @@ const HARMLESS_STDERR = [/^Note: /];
|
|
|
46
47
|
*
|
|
47
48
|
* Dat is geen waarschuwing maar begeleiding, en het is elke run dezelfde tekst.
|
|
48
49
|
* Het werd hiervoor als waarschuwing geteld, waarna de limiet van tien meldingen
|
|
49
|
-
* het middenin afkapte
|
|
50
|
+
* het middenin afkapte dertien regels, drie "weggelaten", en dus een half signaal
|
|
50
51
|
* waar niemand iets mee kon.
|
|
51
52
|
*/
|
|
52
53
|
const INSTRUCTIE_KOP = /^Instructions for interpreting errors/i;
|
|
53
54
|
/**
|
|
54
55
|
* Haalt uit stderr wat het model moet weten bij een gelúkte analyse. Dit werd eerder
|
|
55
|
-
* helemaal weggegooid zodra de JSON parseerde
|
|
56
|
+
* helemaal weggegooid zodra de JSON parseerde en juist daar staat PHPStans
|
|
56
57
|
* "Result is incomplete because of severe errors.": geldige JSON die het project niet
|
|
57
58
|
* volledig dekt. Zonder deze regels leest een model een schone uitslag die dat niet is.
|
|
58
59
|
*
|
|
@@ -62,8 +63,9 @@ export function collectWarnings(stderr) {
|
|
|
62
63
|
const regels = stderr.split('\n').map((regel) => regel.trim());
|
|
63
64
|
const kop = regels.findIndex((regel) => INSTRUCTIE_KOP.test(regel));
|
|
64
65
|
const bruikbaar = (deel) => deel.filter((regel) => regel !== '' && !HARMLESS_STDERR.some((patroon) => patroon.test(regel)));
|
|
65
|
-
if (kop === -1)
|
|
66
|
+
if (kop === -1) {
|
|
66
67
|
return { warnings: bruikbaar(regels), instructions: [] };
|
|
68
|
+
}
|
|
67
69
|
return {
|
|
68
70
|
warnings: bruikbaar(regels.slice(0, kop)),
|
|
69
71
|
instructions: bruikbaar(regels.slice(kop)),
|
|
@@ -101,7 +103,7 @@ export const MAX_DETAIL_CHARS = 2000;
|
|
|
101
103
|
const TIPS_KOP = /^\s*Tip: Try the following/i;
|
|
102
104
|
/**
|
|
103
105
|
* 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
|
|
106
|
+
* de stack trace erachter loopt van de oorzaak naar de opstartcode dus vanaf hier
|
|
105
107
|
* is de *kop* het antwoord en de staart plumbing.
|
|
106
108
|
*/
|
|
107
109
|
const OORZAAK = /^\s*(Error|Fatal error|PHP Fatal error):/i;
|
|
@@ -129,7 +131,7 @@ export function condenseDetails(text, max = MAX_DETAIL_CHARS) {
|
|
|
129
131
|
* binnen: regels uit verschillende kopieën door elkaar, buiten volgorde.
|
|
130
132
|
*
|
|
131
133
|
* Gemeten op een echt project: vier kopieën van dezelfde fout, 246 regels stderr.
|
|
132
|
-
* Dedupliceren gebeurt op de regel zónder naspaties
|
|
134
|
+
* Dedupliceren gebeurt op de regel zónder naspaties PHPStan omkadert zijn eerste
|
|
133
135
|
* regel met opvulling, waardoor twee kopieën anders niet identiek lijken.
|
|
134
136
|
*
|
|
135
137
|
* Verschilt de fout per worker, dan blijven die regels allebei staan: alleen exacte
|
|
@@ -146,8 +148,9 @@ function dedupeWorkers(regels) {
|
|
|
146
148
|
const sleutel = regel.trim();
|
|
147
149
|
// Lege regels dragen geen inhoud; opeenvolgende blanks worden er één.
|
|
148
150
|
if (sleutel === '') {
|
|
149
|
-
if (uit.length > 0 && uit[uit.length - 1] !== '')
|
|
151
|
+
if (uit.length > 0 && uit[uit.length - 1] !== '') {
|
|
150
152
|
uit.push('');
|
|
153
|
+
}
|
|
151
154
|
continue;
|
|
152
155
|
}
|
|
153
156
|
if (gezien.has(sleutel)) {
|
|
@@ -162,8 +165,9 @@ function dedupeWorkers(regels) {
|
|
|
162
165
|
/** Kort een al ontdubbelde lijst in tot `max` tekens. */
|
|
163
166
|
function beknopt(regels, max) {
|
|
164
167
|
const samen = regels.join('\n');
|
|
165
|
-
if (samen.length <= max)
|
|
168
|
+
if (samen.length <= max) {
|
|
166
169
|
return samen;
|
|
170
|
+
}
|
|
167
171
|
const anker = regels.findIndex((regel) => OORZAAK.test(regel));
|
|
168
172
|
if (anker === -1) {
|
|
169
173
|
// Geen herkenbare oorzaak: dan is de kop het beste wat er is.
|
|
@@ -197,8 +201,9 @@ function dropTips(regels) {
|
|
|
197
201
|
continue;
|
|
198
202
|
}
|
|
199
203
|
// De opsomming eindigt bij de eerste regel die geen streepje of leegte is.
|
|
200
|
-
if (inTips && (regel.trim() === '' || regel.trim().startsWith('-')))
|
|
204
|
+
if (inTips && (regel.trim() === '' || regel.trim().startsWith('-'))) {
|
|
201
205
|
continue;
|
|
206
|
+
}
|
|
202
207
|
inTips = false;
|
|
203
208
|
uit.push(regel);
|
|
204
209
|
}
|
|
@@ -209,8 +214,9 @@ function neemTot(regels, budget) {
|
|
|
209
214
|
const uit = [];
|
|
210
215
|
let gebruikt = 0;
|
|
211
216
|
for (const regel of regels) {
|
|
212
|
-
if (gebruikt + regel.length + 1 > budget)
|
|
217
|
+
if (gebruikt + regel.length + 1 > budget) {
|
|
213
218
|
break;
|
|
219
|
+
}
|
|
214
220
|
uit.push(regel);
|
|
215
221
|
gebruikt += regel.length + 1;
|
|
216
222
|
}
|
|
@@ -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
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/phpstan/parameters.ts"],"names":[],"mappings":"AAwBA;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;
|
|
1
|
+
{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../src/phpstan/parameters.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
*/
|