phpstan-mcp-mx 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +125 -3
- package/dist/changed.d.ts +35 -0
- package/dist/changed.js +80 -2
- package/dist/changed.js.map +1 -1
- package/dist/compare.d.ts +69 -0
- package/dist/compare.js +101 -0
- package/dist/compare.js.map +1 -0
- package/dist/composer.d.ts +68 -0
- package/dist/composer.js +313 -0
- package/dist/composer.js.map +1 -0
- package/dist/phpstan.d.ts +11 -0
- package/dist/phpstan.js +17 -0
- package/dist/phpstan.js.map +1 -1
- package/dist/project.d.ts +15 -0
- package/dist/project.js +54 -3
- package/dist/project.js.map +1 -1
- package/dist/report.d.ts +37 -1
- package/dist/report.js +134 -4
- package/dist/report.js.map +1 -1
- package/dist/runs.d.ts +26 -1
- package/dist/runs.js +22 -3
- package/dist/runs.js.map +1 -1
- package/dist/tools/analysis.js +47 -5
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/inspect.js +102 -17
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/prompts.js +24 -16
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/shared.d.ts +46 -0
- package/dist/tools/shared.js +83 -7
- package/dist/tools/shared.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
3
3
|
All notable changes per version. Generated by semantic-release from the commit
|
|
4
4
|
history since 0.10.0; the versions before that were written by hand.
|
|
5
5
|
|
|
6
|
+
# [0.20.0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/compare/v0.19.0...v0.20.0) (2026-09-11)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* close five gaps found reviewing the unreleased features ([9d0a4c5](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/9d0a4c57b4bb43009512d26ad5be79e5bea78a18))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* add compareTo to show what a fix solved and what it broke ([1cbcac0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/1cbcac052a513439d3fb586cddda62576740fbdc))
|
|
17
|
+
* add onlyIn to limit a page to files or directories ([8f75ef7](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/8f75ef756b60a5864aff1ff5e581a6109a204624))
|
|
18
|
+
* add scope project to analyse_changed for breakage in other files ([bcd4633](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/bcd46333cf9fd3ac1d13c6b5122dcef5dd6330f1))
|
|
19
|
+
* count inline [@phpstan-ignore](https://codeberg.org/phpstan-ignore) comments in baseline_summary ([4ec1a17](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/4ec1a17b536ecc842b2b2b10e87044f4f8b67583))
|
|
20
|
+
* group repeated messages in the summary with byMessage ([581e1ff](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/581e1fff01f8a4c98f365c891dc1e77174d23226))
|
|
21
|
+
* report a framework whose PHPStan extension is not loaded ([6c3ef8e](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/6c3ef8e5719b8d074aef73a61c9b7451ae690fbe))
|
|
22
|
+
* report Composer scripts that run PHPStan in diagnose_project ([fff2f09](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/fff2f09c8a29b73d5e38993c73e3d2bbf07ead7d))
|
|
23
|
+
|
|
6
24
|
# [0.19.0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/compare/v0.18.0...v0.19.0) (2026-09-11)
|
|
7
25
|
|
|
8
26
|
|
package/README.md
CHANGED
|
@@ -415,15 +415,18 @@ expect as `project`.
|
|
|
415
415
|
| `memoryLimit` | no | e.g. `1G`, if PHPStan hits the PHP memory limit |
|
|
416
416
|
| `timeoutSeconds` | no | 300 by default |
|
|
417
417
|
| `identifiers` | no | only these identifiers in the page, e.g. `["argument.type"]` |
|
|
418
|
+
| `onlyIn` | no | only findings in these files or directories, e.g. `["app/Models"]` |
|
|
418
419
|
| `offset` / `limit` | no | which part of the findings you get back |
|
|
419
420
|
| `runId` | no | from an earlier response: the next page from the same result (see [What you get back](#what-you-get-back)) |
|
|
421
|
+
| `compareTo` | no | the `runId` from before your fix: a new analysis that also lists what was fixed and what is new (see [Comparing with an earlier analysis](#comparing-with-an-earlier-analysis)) |
|
|
420
422
|
|
|
421
423
|
`config` goes through the same path check as `project`. That is not a formality: a `.neon`
|
|
422
424
|
can point to `bootstrapFiles` and extensions, so a freely chosen config path would be a way
|
|
423
425
|
to have arbitrary PHP code executed around the whitelist.
|
|
424
426
|
|
|
425
|
-
`identifiers` only
|
|
426
|
-
still see what you left out. A
|
|
427
|
+
`identifiers` and `onlyIn` only filter the *page*; the summary keeps counting everything, so
|
|
428
|
+
you can still see what you left out. A directory in `onlyIn` matches up to a `/`: `app/Model`
|
|
429
|
+
does not match `app/Models/User.php`. A value matches exactly (`argument.type`) or as a group
|
|
427
430
|
(`missingType` matches `missingType.return` and `missingType.parameter`, but `argument` does
|
|
428
431
|
not match `argumentx.something`).
|
|
429
432
|
|
|
@@ -444,6 +447,7 @@ filling up with what has been there for years.
|
|
|
444
447
|
| `base` | no | commit, branch or tag to compare against (`HEAD` by default) |
|
|
445
448
|
| `staged` | no | only what is staged (`git diff --cached`), for a check before a commit |
|
|
446
449
|
| `onlyChangedLines` | no | only findings on lines that were changed |
|
|
450
|
+
| `scope` | no | `"project"` analyses what your config covers, as `analyse_project` does, and marks which findings are in the changed files |
|
|
447
451
|
|
|
448
452
|
Otherwise the same arguments as `analyse_project`, except `paths`. With `base=main` you get
|
|
449
453
|
the whole branch instead of just your uncommitted work.
|
|
@@ -454,6 +458,29 @@ without that distinction you either start fixing those or stop too early. Keep i
|
|
|
454
458
|
finding on an unchanged line can still follow from your change — a modified signature causes
|
|
455
459
|
errors at the call sites, and you didn't touch those lines.
|
|
456
460
|
|
|
461
|
+
Those call sites are often in files you didn't change at all, and then this tool doesn't even
|
|
462
|
+
analyse them: change `greet(string $name)` to `greet(string $name, int $times)` and it reports
|
|
463
|
+
"No findings." while every caller is broken. With `scope: "project"` it analyses everything your config covers
|
|
464
|
+
instead and marks each file you didn't change:
|
|
465
|
+
|
|
466
|
+
```
|
|
467
|
+
0 on a line you changed (marked with +), 0 elsewhere in the changed files, 4 in files you did
|
|
468
|
+
not change. …
|
|
469
|
+
|
|
470
|
+
src/Use.php (not changed)
|
|
471
|
+
4 arguments.count Function greet invoked with 1 parameter, 2 required.
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
PHPStan then analyses the `paths` from your config. A changed file outside them — a test in a
|
|
475
|
+
project that only analyses `src` — isn't covered by that, and the response names it; leave out
|
|
476
|
+
`scope` to analyse the changed files themselves.
|
|
477
|
+
|
|
478
|
+
That is slower — with a warm result cache one to five seconds on real projects, depending on
|
|
479
|
+
how many files depend on what you changed — and noisier: in a project without a baseline,
|
|
480
|
+
every old error shows up under "not changed" too. One analysis cannot tell which of those your
|
|
481
|
+
change caused; a finding that names what you changed is the strongest hint. After a fix,
|
|
482
|
+
`compareTo` tells exactly what is new.
|
|
483
|
+
|
|
457
484
|
Two things it includes that are easy to miss: **new files not yet added to git** (`git diff`
|
|
458
485
|
doesn't know them, so there is a second query for them) and **nothing from
|
|
459
486
|
`resources/views`** — a `.blade.php` ends in `.php`, but it is a template that PHPStan never
|
|
@@ -570,6 +597,38 @@ The level shows up here even when it is set in a shared config from `vendor/`, a
|
|
|
570
597
|
directory is the one `clear_result_cache` clears. If the application doesn't boot (Larastan
|
|
571
598
|
without the extensions the app needs), this part is missing, with the reason stated.
|
|
572
599
|
|
|
600
|
+
Last come the Composer scripts that run PHPStan, and how they differ from the way this server
|
|
601
|
+
runs it — the reason a developer can see different results than the server does:
|
|
602
|
+
|
|
603
|
+
```
|
|
604
|
+
Composer scripts that run PHPStan:
|
|
605
|
+
- code:analyze: vendor/bin/phpstan analyse --configuration=phpstan.neon --memory-limit 1G
|
|
606
|
+
sets --memory-limit 1G, the server none (PHP's own limit); pass memoryLimit: "1G", or set it for this project in PHPSTAN_MCP_PROJECTS
|
|
607
|
+
- code:analyze:strict: vendor/bin/phpstan analyse --configuration=phpstan-strict.neon --memory-limit 1G
|
|
608
|
+
uses the config phpstan-strict.neon, the server phpstan.neon; pass config: "phpstan-strict.neon" to analyse the same way
|
|
609
|
+
sets --memory-limit 1G, …
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
If a framework is installed whose magic PHPStan can't see without an extension, and that
|
|
613
|
+
extension isn't loaded, that comes first — it explains more than anything else:
|
|
614
|
+
|
|
615
|
+
```
|
|
616
|
+
Missing PHPStan extensions:
|
|
617
|
+
- laravel/framework is installed, but larastan/larastan is not loaded, so PHPStan does not see Laravel's magic (Eloquent properties and relations, facades, the container). That shows up as false positives, such as undefined properties and methods. larastan/larastan is installed but not included: add its neon to the config's includes, or install phpstan/extension-installer.
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
That covers Laravel (Larastan), Doctrine ORM (`phpstan/phpstan-doctrine`) and Symfony
|
|
621
|
+
(`phpstan/phpstan-symfony`). Test tools such as PHPUnit and Mockery are deliberately left out:
|
|
622
|
+
they are in nearly every project, often as a dependency of a dependency, and a notice on every
|
|
623
|
+
project is noise. What is loaded comes from PHPStan's own diagnosis, so an extension included by
|
|
624
|
+
hand counts too.
|
|
625
|
+
|
|
626
|
+
Scripts are recognised by their command, not their name, and are only read — never run. A
|
|
627
|
+
script that goes through `make` or another script can't be read without running it, so it is
|
|
628
|
+
left out. Only what changes the result is compared: the config, the memory limit, the level,
|
|
629
|
+
explicit paths and `--autoload-file`. The server never takes these over by itself: that would
|
|
630
|
+
let the project decide how the server starts PHPStan.
|
|
631
|
+
|
|
573
632
|
### `clear_result_cache`
|
|
574
633
|
|
|
575
634
|
Clears PHPStan's result cache, so the next analysis recomputes everything. Useful when a
|
|
@@ -598,6 +657,21 @@ Note the distinction: what is in here is exactly what `analyse_project` does *no
|
|
|
598
657
|
project that includes its baseline only reports the errors that are new — PHPStan already
|
|
599
658
|
makes that comparison itself.
|
|
600
659
|
|
|
660
|
+
It also counts the inline `@phpstan-ignore` comments in the code — the third place where
|
|
661
|
+
errors get hidden, next to the baseline and `ignoreErrors` in the config, and the only one
|
|
662
|
+
nothing counted until now:
|
|
663
|
+
|
|
664
|
+
```
|
|
665
|
+
18 inline @phpstan-ignore comment(s) in 14 file(s) — counted in all PHP files git knows, also outside the analysed paths. These are hidden too, and a new baseline does not touch them.
|
|
666
|
+
11 have no identifier (@phpstan-ignore-line, -next-line): they ignore every error on their line.
|
|
667
|
+
1 name an identifier but give no reason in parentheses.
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
That is counted with `git grep`, so `vendor/`, ignored files and Blade templates stay out,
|
|
671
|
+
and files not yet added to git count. Without git, the baseline part still works and the
|
|
672
|
+
response says why the inline comments were not counted — `null`, not zero, because zero
|
|
673
|
+
would claim nothing is hidden.
|
|
674
|
+
|
|
601
675
|
With `path` (e.g. `"app/Models/User.php"`) you also get the entries for that one file: per
|
|
602
676
|
entry the identifier, the count and the pattern. That file doesn't have to exist any more —
|
|
603
677
|
it is precisely a deleted file that the entries doing nothing belong to.
|
|
@@ -749,6 +823,20 @@ src/Support/Filters/DealFilters.php
|
|
|
749
823
|
42 argument.type Parameter #1 $id expects int, string given.
|
|
750
824
|
```
|
|
751
825
|
|
|
826
|
+
A message that occurs more than once gets its own line under the counts, because the same
|
|
827
|
+
message in several places often has one cause:
|
|
828
|
+
|
|
829
|
+
```
|
|
830
|
+
Same message more than once (one fix may cover several; check that they point to the same code):
|
|
831
|
+
4 argument.type Parameter #1 $activeFilters of static method …\PartAccessoryBikeModelFilter::options() expects … (in 4 files)
|
|
832
|
+
3 argument.type Parameter #1 $query of method …\OrderByEnum::apply() expects … (in 3 files)
|
|
833
|
+
```
|
|
834
|
+
|
|
835
|
+
On one real project, the top two lines pointed to the same method signature: 8 of its 25
|
|
836
|
+
findings. Messages are compared exactly, without normalising names or numbers away — and a
|
|
837
|
+
generic message such as `Possibly invalid array key type mixed.` can still have separate
|
|
838
|
+
causes, so it is a pointer, not a promise.
|
|
839
|
+
|
|
752
840
|
When there are more results, the text ends with the literal follow-up call:
|
|
753
841
|
|
|
754
842
|
```
|
|
@@ -758,13 +846,39 @@ then comes from this result instead of a new analysis.
|
|
|
758
846
|
|
|
759
847
|
With that `runId`, the next page comes from the same result. Without it, every page would be a
|
|
760
848
|
new analysis, and if you change a file in between you get pages with different totals. Only
|
|
761
|
-
`offset`, `limit`, `identifiers` and `onlyChangedLines` may differ
|
|
849
|
+
`offset`, `limit`, `identifiers`, `onlyIn` and `onlyChangedLines` may differ — so one analysis
|
|
850
|
+
of the whole project can be read directory by directory without running PHPStan again. If the `runId` belongs to
|
|
762
851
|
different arguments, has expired (after ten minutes) or is unknown, a new analysis follows
|
|
763
852
|
with a notice instead of an error.
|
|
764
853
|
|
|
765
854
|
A page from an earlier result states how old that result is. So after a fix, analyse
|
|
766
855
|
*without* `runId`: otherwise you see the result from before the fix.
|
|
767
856
|
|
|
857
|
+
### Comparing with an earlier analysis
|
|
858
|
+
|
|
859
|
+
Pass the `runId` from before your fix as `compareTo` instead. That is a new analysis, and the
|
|
860
|
+
response also says what was fixed and what is new since then:
|
|
861
|
+
|
|
862
|
+
```
|
|
863
|
+
Compared with the analysis of 95s ago (runId 7Ysv9hRE): 1 fixed, 1 new, 2 still open.
|
|
864
|
+
Fixed (line numbers from that analysis):
|
|
865
|
+
src/A.php:4 return.type Function a() should return string but returns int.
|
|
866
|
+
New:
|
|
867
|
+
src/A.php:10 return.type Function d() should return bool but returns int.
|
|
868
|
+
```
|
|
869
|
+
|
|
870
|
+
Findings are matched on file, identifier and message, not on line number: a fix shifts the
|
|
871
|
+
lines below it, and PHPStan's own baseline ignores lines for the same reason. When a message
|
|
872
|
+
occurs several times in a file and only the count changed, all its lines are listed, with a
|
|
873
|
+
note that which one it is cannot be told apart.
|
|
874
|
+
|
|
875
|
+
The comparison counts over all findings, not just the page, and only needs the same arguments
|
|
876
|
+
as the earlier analysis (`offset`, `limit` and `identifiers` may differ). With
|
|
877
|
+
`analyse_changed`, a file that only one of the two analyses covered is not compared — touch a
|
|
878
|
+
second file while fixing, and its existing errors would otherwise show up as new. Those are
|
|
879
|
+
counted separately. A `runId` stays usable for comparing for an hour, longer than for paging:
|
|
880
|
+
the fixing itself sits between the two analyses.
|
|
881
|
+
|
|
768
882
|
### Cancelling
|
|
769
883
|
|
|
770
884
|
If your client cancels the request, PHPStan's whole process group is cleaned up instead of
|
|
@@ -838,6 +952,14 @@ How many were left out is in `omitted`, and in the text as "N more message(s) no
|
|
|
838
952
|
different environment. The Claude app, for example, starts it without `TMPDIR`, and then the
|
|
839
953
|
per-project cache lives under `/tmp/phpstan-mcp/` instead of under your shell's temp
|
|
840
954
|
directory.
|
|
955
|
+
- **Claude Desktop gives up on a tool call after 60 seconds,** whatever `timeoutSeconds` says,
|
|
956
|
+
and that limit can't be configured (reported in
|
|
957
|
+
[anthropics/claude-code#43791](https://github.com/anthropics/claude-code/issues/43791)).
|
|
958
|
+
Claude Code has no such practical limit. On the projects this server was measured on, a cold
|
|
959
|
+
full analysis took 3 to 8 seconds, so it rarely matters; on a very large project in Desktop,
|
|
960
|
+
analyse part of it (`paths`, `analyse_changed`) instead. A client built on the MCP SDK
|
|
961
|
+
cancels the request when it gives up, and the server then stops PHPStan instead of letting
|
|
962
|
+
it run on.
|
|
841
963
|
|
|
842
964
|
## Development
|
|
843
965
|
|
package/dist/changed.d.ts
CHANGED
|
@@ -46,6 +46,41 @@ export interface IgnoreAddition {
|
|
|
46
46
|
* Zonder die tweede mist juist het bestand dat net is aangemaakt.
|
|
47
47
|
*/
|
|
48
48
|
export declare function changedPhpFiles(project: ResolvedProject, base?: string, staged?: boolean): Promise<ChangedFiles>;
|
|
49
|
+
/** De `@phpstan-ignore`-regels die nu in het project staan, geteld. */
|
|
50
|
+
export interface InlineIgnores {
|
|
51
|
+
/** Aantal commentaarregels met een ignore. */
|
|
52
|
+
readonly total: number;
|
|
53
|
+
readonly files: number;
|
|
54
|
+
/** `@phpstan-ignore-line` en `-next-line` zonder identifier: die zetten álles op hun regel weg. */
|
|
55
|
+
readonly withoutIdentifier: number;
|
|
56
|
+
/** Met een identifier maar zonder reden tussen haakjes. */
|
|
57
|
+
readonly withoutReason: number;
|
|
58
|
+
/** Een ignore met twee identifiers telt bij allebei. */
|
|
59
|
+
readonly byIdentifier: readonly {
|
|
60
|
+
identifier: string;
|
|
61
|
+
count: number;
|
|
62
|
+
}[];
|
|
63
|
+
readonly byPath: readonly {
|
|
64
|
+
path: string;
|
|
65
|
+
count: number;
|
|
66
|
+
}[];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Telt de `@phpstan-ignore`-regels in het project. De derde bron van wat er verstopt wordt,
|
|
70
|
+
* naast de baseline en `ignoreErrors` in de config — en de enige die nog niemand telde:
|
|
71
|
+
* `analyse_changed` ziet alleen de nieuwe.
|
|
72
|
+
*
|
|
73
|
+
* Via `git grep`, dat `vendor/` en genegeerde bestanden al overslaat; met `--untracked`
|
|
74
|
+
* zodat een bestand dat nog niet toegevoegd is meetelt, net als bij `analyse_changed`.
|
|
75
|
+
* Templates (`.blade.php`) niet: die analyseert PHPStan niet. Wel alle andere PHP-bestanden,
|
|
76
|
+
* ook buiten de `paths` uit de config — nagemeten stond op vier echte projecten elke ignore
|
|
77
|
+
* binnen die paden, en beperken zou een PHPStan-run kosten die bij een project dat op de
|
|
78
|
+
* host niet start mislukt. De tekst zegt het erbij.
|
|
79
|
+
*
|
|
80
|
+
* `-z` omdat een pad een dubbele punt kan bevatten. Exit 1 is hier geen fout maar "niets
|
|
81
|
+
* gevonden"; daarom niet via `git()`, dat elke andere exitcode dan 0 als storing leest.
|
|
82
|
+
*/
|
|
83
|
+
export declare function countInlineIgnores(project: ResolvedProject): Promise<InlineIgnores>;
|
|
49
84
|
/** Per bestand de ignores op toegevoegde en op weggehaalde regels. */
|
|
50
85
|
export interface IgnoreChanges {
|
|
51
86
|
readonly added: {
|
package/dist/changed.js
CHANGED
|
@@ -115,6 +115,80 @@ function ignoreIn(content) {
|
|
|
115
115
|
text: (match[2] ?? '').replace(/\*\/.*$/, '').trim(),
|
|
116
116
|
};
|
|
117
117
|
}
|
|
118
|
+
/** Hoeveel regels de tellingen van inline ignores hoogstens tonen. */
|
|
119
|
+
const INLINE_ROWS = 10;
|
|
120
|
+
/**
|
|
121
|
+
* Telt de `@phpstan-ignore`-regels in het project. De derde bron van wat er verstopt wordt,
|
|
122
|
+
* naast de baseline en `ignoreErrors` in de config — en de enige die nog niemand telde:
|
|
123
|
+
* `analyse_changed` ziet alleen de nieuwe.
|
|
124
|
+
*
|
|
125
|
+
* Via `git grep`, dat `vendor/` en genegeerde bestanden al overslaat; met `--untracked`
|
|
126
|
+
* zodat een bestand dat nog niet toegevoegd is meetelt, net als bij `analyse_changed`.
|
|
127
|
+
* Templates (`.blade.php`) niet: die analyseert PHPStan niet. Wel alle andere PHP-bestanden,
|
|
128
|
+
* ook buiten de `paths` uit de config — nagemeten stond op vier echte projecten elke ignore
|
|
129
|
+
* binnen die paden, en beperken zou een PHPStan-run kosten die bij een project dat op de
|
|
130
|
+
* host niet start mislukt. De tekst zegt het erbij.
|
|
131
|
+
*
|
|
132
|
+
* `-z` omdat een pad een dubbele punt kan bevatten. Exit 1 is hier geen fout maar "niets
|
|
133
|
+
* gevonden"; daarom niet via `git()`, dat elke andere exitcode dan 0 als storing leest.
|
|
134
|
+
*/
|
|
135
|
+
export async function countInlineIgnores(project) {
|
|
136
|
+
// --no-color, --no-column en -F zetten vast wat de gebruikersconfig anders bepaalt, net als
|
|
137
|
+
// bij `diff -U0`. Nagemeten: met `grep.column=true` komt er een kolomnummer tussen pad en
|
|
138
|
+
// inhoud en telde deze functie 0; met `color.grep=always` staan er escapecodes in beide.
|
|
139
|
+
const args = [
|
|
140
|
+
'grep', '--no-color', '--no-column', '-F', '-z', '-n', '-I', '--untracked',
|
|
141
|
+
'-e', '@phpstan-ignore', '--', '*.php', ':(exclude)*.blade.php',
|
|
142
|
+
];
|
|
143
|
+
const result = await execute(project.path, args);
|
|
144
|
+
const nietsGevonden = result.spawnError === null && result.code === 1 && result.stderr.trim() === '';
|
|
145
|
+
if (!nietsGevonden)
|
|
146
|
+
throwIfFailed(project.path, args, result);
|
|
147
|
+
const perIdentifier = new Map();
|
|
148
|
+
const perPath = new Map();
|
|
149
|
+
let total = 0;
|
|
150
|
+
let withoutIdentifier = 0;
|
|
151
|
+
let withoutReason = 0;
|
|
152
|
+
for (const record of result.stdout.split('\n')) {
|
|
153
|
+
const [path, , content] = record.split('\0');
|
|
154
|
+
if (path === undefined || content === undefined)
|
|
155
|
+
continue;
|
|
156
|
+
const ignore = ignoreIn(content);
|
|
157
|
+
if (ignore === null)
|
|
158
|
+
continue;
|
|
159
|
+
total++;
|
|
160
|
+
perPath.set(path, (perPath.get(path) ?? 0) + 1);
|
|
161
|
+
// Alleen de kale `@phpstan-ignore` neemt identifiers. Wat achter `-line` of `-next-line`
|
|
162
|
+
// staat is gewoon commentaar ("because …"), en zou anders als identifier meetellen.
|
|
163
|
+
const identifiers = ignore.kind === '@phpstan-ignore'
|
|
164
|
+
? ignore.text
|
|
165
|
+
.replace(/\(.*$/, '')
|
|
166
|
+
.split(/[\s,]+/)
|
|
167
|
+
.filter((part) => /^[\w.-]+$/.test(part))
|
|
168
|
+
: [];
|
|
169
|
+
if (identifiers.length === 0) {
|
|
170
|
+
withoutIdentifier++;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
// Een openend haakje met tekst erachter is genoeg: een lange reden loopt soms door op
|
|
174
|
+
// de volgende regel, en dan staat het sluitende haakje hier niet.
|
|
175
|
+
if (!/\(\s*[^\s)]/.test(ignore.text))
|
|
176
|
+
withoutReason++;
|
|
177
|
+
for (const identifier of identifiers)
|
|
178
|
+
perIdentifier.set(identifier, (perIdentifier.get(identifier) ?? 0) + 1);
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
total,
|
|
182
|
+
files: perPath.size,
|
|
183
|
+
withoutIdentifier,
|
|
184
|
+
withoutReason,
|
|
185
|
+
byIdentifier: topRows(perIdentifier).map(([identifier, count]) => ({ identifier, count })),
|
|
186
|
+
byPath: topRows(perPath).map(([path, count]) => ({ path, count })),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function topRows(counts) {
|
|
190
|
+
return [...counts.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])).slice(0, INLINE_ROWS);
|
|
191
|
+
}
|
|
118
192
|
/**
|
|
119
193
|
* Waaraan een ignore herkend wordt als dezelfde: de soort en de identifiers, zonder de
|
|
120
194
|
* reden. Nagemeten op een echt project: een commit die alleen de reden van een
|
|
@@ -351,7 +425,12 @@ function lines(output) {
|
|
|
351
425
|
.filter((line) => line !== '');
|
|
352
426
|
}
|
|
353
427
|
async function git(cwd, args) {
|
|
354
|
-
const
|
|
428
|
+
const execution = await execute(cwd, args);
|
|
429
|
+
throwIfFailed(cwd, args, execution);
|
|
430
|
+
return execution.stdout;
|
|
431
|
+
}
|
|
432
|
+
/** Gooit de GitError die bij deze uitvoering hoort, of niets als hij geslaagd is. */
|
|
433
|
+
function throwIfFailed(cwd, args, { code, stderr, spawnError }) {
|
|
355
434
|
if (spawnError !== null) {
|
|
356
435
|
throw new GitError(spawnError.code === 'ENOENT'
|
|
357
436
|
? 'git was not found. Pass paths to analyse_project to work without git.'
|
|
@@ -366,7 +445,6 @@ async function git(cwd, args) {
|
|
|
366
445
|
: 'git_missing';
|
|
367
446
|
throw new GitError(describeGitFailure(cwd, args, stderr, code), reden, { exitCode: code });
|
|
368
447
|
}
|
|
369
|
-
return stdout;
|
|
370
448
|
}
|
|
371
449
|
function describeGitFailure(cwd, args, stderr, code) {
|
|
372
450
|
const details = stderr.trim().slice(0, 1000);
|
package/dist/changed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changed.js","sourceRoot":"","sources":["../src/changed.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"changed.js","sourceRoot":"","sources":["../src/changed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { AnalysisResult } from './phpstan.js';
|
|
2
|
+
/** Hoeveel groepen een lijst (opgelost of nieuw) hoogstens noemt; de rest als aantal. */
|
|
3
|
+
export declare const MAX_COMPARED_ENTRIES = 20;
|
|
4
|
+
/**
|
|
5
|
+
* Eén groep bevindingen met dezelfde melding in hetzelfde bestand, waarvan er `count`
|
|
6
|
+
* opgelost of nieuw zijn.
|
|
7
|
+
*/
|
|
8
|
+
export interface ComparedEntry {
|
|
9
|
+
readonly file: string;
|
|
10
|
+
readonly identifier: string | null;
|
|
11
|
+
readonly message: string;
|
|
12
|
+
readonly count: number;
|
|
13
|
+
/**
|
|
14
|
+
* De regels van álle bevindingen met deze melding in dit bestand: bij een opgeloste in
|
|
15
|
+
* de eerdere analyse, bij een nieuwe in deze. Is `count` kleiner, dan is niet te zeggen
|
|
16
|
+
* welke van die regels het is.
|
|
17
|
+
*/
|
|
18
|
+
readonly lines: readonly (number | null)[];
|
|
19
|
+
}
|
|
20
|
+
/** Hoe deze analyse zich verhoudt tot een eerdere. */
|
|
21
|
+
export interface Comparison {
|
|
22
|
+
/** De runId van de eerdere analyse. */
|
|
23
|
+
readonly comparedTo: string;
|
|
24
|
+
/** Hoe oud die was op het moment van vergelijken. */
|
|
25
|
+
readonly ageSeconds: number;
|
|
26
|
+
readonly fixed: number;
|
|
27
|
+
readonly new: number;
|
|
28
|
+
readonly remaining: number;
|
|
29
|
+
readonly fixedFindings: readonly ComparedEntry[];
|
|
30
|
+
readonly newFindings: readonly ComparedEntry[];
|
|
31
|
+
/** Hoeveel groepen er niet genoemd zijn omdat het er te veel waren. */
|
|
32
|
+
readonly omitted: {
|
|
33
|
+
readonly fixed: number;
|
|
34
|
+
readonly new: number;
|
|
35
|
+
};
|
|
36
|
+
/** Bevindingen in bestanden die maar één van beide analyses dekte. */
|
|
37
|
+
readonly notCompared: {
|
|
38
|
+
readonly findings: number;
|
|
39
|
+
readonly files: readonly string[];
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Eén kant van de vergelijking: de uitslag en wat er geanalyseerd is. */
|
|
43
|
+
export interface ComparedRun {
|
|
44
|
+
readonly result: AnalysisResult;
|
|
45
|
+
/** De geanalyseerde paden, of null als de config dat bepaalde. */
|
|
46
|
+
readonly scope: readonly string[] | null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Legt een analyse naast een eerdere en telt wat er opgelost, nieuw en nog open is.
|
|
50
|
+
*
|
|
51
|
+
* Gekoppeld op bestand, identifier en melding — niet op het regelnummer: een reparatie
|
|
52
|
+
* verschuift regels, en dan zou elke bevinding eronder als opgelost én nieuw tellen.
|
|
53
|
+
* Om die reden negeert PHPStans eigen baseline de regel ook. Nagemeten: drie lege regels
|
|
54
|
+
* bovenin het drukste bestand van `lasouris-lease-shared` verschoven alle elf bevindingen
|
|
55
|
+
* en veranderden geen enkele melding.
|
|
56
|
+
*
|
|
57
|
+
* Een melding die zelf een regelnummer bevat (een anonieme klasse heet
|
|
58
|
+
* `class@anonymous/pad.php:12`) telt na zo'n verschuiving wel als opgelost én nieuw. Geen
|
|
59
|
+
* eigen normalisering daarvoor: die zou bij elke PHPStan-release verder afdrijven.
|
|
60
|
+
*
|
|
61
|
+
* Alleen bestanden die beide analyses dekten doen mee. Bij `analyse_changed` volgt de
|
|
62
|
+
* lijst uit git: wie tijdens een reparatie een tweede bestand aanraakt, krijgt dat bestand
|
|
63
|
+
* erbij, en diens bestaande fouten zouden anders als nieuw tellen — een antwoord dat klopt
|
|
64
|
+
* maar misleidt.
|
|
65
|
+
*/
|
|
66
|
+
export declare function compareRuns(project: string, before: ComparedRun, after: ComparedRun, meta: {
|
|
67
|
+
readonly comparedTo: string;
|
|
68
|
+
readonly ageSeconds: number;
|
|
69
|
+
}): Comparison;
|
package/dist/compare.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { contains } from './project.js';
|
|
2
|
+
import { displayPath } from './report.js';
|
|
3
|
+
/** Hoeveel groepen een lijst (opgelost of nieuw) hoogstens noemt; de rest als aantal. */
|
|
4
|
+
export const MAX_COMPARED_ENTRIES = 20;
|
|
5
|
+
/** Hoeveel bestanden de melding over niet-vergeleken bevindingen hoogstens noemt. */
|
|
6
|
+
const MAX_NOT_COMPARED_FILES = 10;
|
|
7
|
+
/**
|
|
8
|
+
* Legt een analyse naast een eerdere en telt wat er opgelost, nieuw en nog open is.
|
|
9
|
+
*
|
|
10
|
+
* Gekoppeld op bestand, identifier en melding — niet op het regelnummer: een reparatie
|
|
11
|
+
* verschuift regels, en dan zou elke bevinding eronder als opgelost én nieuw tellen.
|
|
12
|
+
* Om die reden negeert PHPStans eigen baseline de regel ook. Nagemeten: drie lege regels
|
|
13
|
+
* bovenin het drukste bestand van `lasouris-lease-shared` verschoven alle elf bevindingen
|
|
14
|
+
* en veranderden geen enkele melding.
|
|
15
|
+
*
|
|
16
|
+
* Een melding die zelf een regelnummer bevat (een anonieme klasse heet
|
|
17
|
+
* `class@anonymous/pad.php:12`) telt na zo'n verschuiving wel als opgelost én nieuw. Geen
|
|
18
|
+
* eigen normalisering daarvoor: die zou bij elke PHPStan-release verder afdrijven.
|
|
19
|
+
*
|
|
20
|
+
* Alleen bestanden die beide analyses dekten doen mee. Bij `analyse_changed` volgt de
|
|
21
|
+
* lijst uit git: wie tijdens een reparatie een tweede bestand aanraakt, krijgt dat bestand
|
|
22
|
+
* erbij, en diens bestaande fouten zouden anders als nieuw tellen — een antwoord dat klopt
|
|
23
|
+
* maar misleidt.
|
|
24
|
+
*/
|
|
25
|
+
export function compareRuns(project, before, after, meta) {
|
|
26
|
+
const sameScope = equalScopes(before.scope, after.scope);
|
|
27
|
+
const inBoth = (file) => sameScope || (inScope(file, before.scope) && inScope(file, after.scope));
|
|
28
|
+
const groups = new Map();
|
|
29
|
+
const notComparedFiles = new Set();
|
|
30
|
+
let notCompared = 0;
|
|
31
|
+
const add = (finding, side) => {
|
|
32
|
+
if (!inBoth(finding.file)) {
|
|
33
|
+
notCompared++;
|
|
34
|
+
notComparedFiles.add(displayPath(project, finding.file));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const key = JSON.stringify([finding.file, finding.identifier, finding.message]);
|
|
38
|
+
const group = groups.get(key) ?? { finding, before: [], after: [] };
|
|
39
|
+
group[side].push(finding.line);
|
|
40
|
+
groups.set(key, group);
|
|
41
|
+
};
|
|
42
|
+
for (const finding of before.result.findings)
|
|
43
|
+
add(finding, 'before');
|
|
44
|
+
for (const finding of after.result.findings)
|
|
45
|
+
add(finding, 'after');
|
|
46
|
+
const fixed = [];
|
|
47
|
+
const added = [];
|
|
48
|
+
let remaining = 0;
|
|
49
|
+
for (const group of groups.values()) {
|
|
50
|
+
remaining += Math.min(group.before.length, group.after.length);
|
|
51
|
+
const entry = (count, lines) => ({
|
|
52
|
+
file: displayPath(project, group.finding.file),
|
|
53
|
+
identifier: group.finding.identifier,
|
|
54
|
+
message: group.finding.message,
|
|
55
|
+
count,
|
|
56
|
+
lines: [...lines].sort(byLine),
|
|
57
|
+
});
|
|
58
|
+
if (group.before.length > group.after.length)
|
|
59
|
+
fixed.push(entry(group.before.length - group.after.length, group.before));
|
|
60
|
+
if (group.after.length > group.before.length)
|
|
61
|
+
added.push(entry(group.after.length - group.before.length, group.after));
|
|
62
|
+
}
|
|
63
|
+
fixed.sort(byPlace);
|
|
64
|
+
added.sort(byPlace);
|
|
65
|
+
return {
|
|
66
|
+
comparedTo: meta.comparedTo,
|
|
67
|
+
ageSeconds: meta.ageSeconds,
|
|
68
|
+
fixed: sum(fixed),
|
|
69
|
+
new: sum(added),
|
|
70
|
+
remaining,
|
|
71
|
+
fixedFindings: fixed.slice(0, MAX_COMPARED_ENTRIES),
|
|
72
|
+
newFindings: added.slice(0, MAX_COMPARED_ENTRIES),
|
|
73
|
+
omitted: {
|
|
74
|
+
fixed: Math.max(fixed.length - MAX_COMPARED_ENTRIES, 0),
|
|
75
|
+
new: Math.max(added.length - MAX_COMPARED_ENTRIES, 0),
|
|
76
|
+
},
|
|
77
|
+
notCompared: { findings: notCompared, files: [...notComparedFiles].sort().slice(0, MAX_NOT_COMPARED_FILES) },
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function equalScopes(a, b) {
|
|
81
|
+
if (a === null || b === null)
|
|
82
|
+
return a === b;
|
|
83
|
+
if (a.length !== b.length)
|
|
84
|
+
return false;
|
|
85
|
+
const set = new Set(a);
|
|
86
|
+
return b.every((path) => set.has(path));
|
|
87
|
+
}
|
|
88
|
+
function inScope(file, scope) {
|
|
89
|
+
return scope === null || scope.some((path) => contains(path, file));
|
|
90
|
+
}
|
|
91
|
+
function sum(entries) {
|
|
92
|
+
return entries.reduce((total, entry) => total + entry.count, 0);
|
|
93
|
+
}
|
|
94
|
+
/** Een bevinding zonder regel achteraan: die hoort bij het bestand, niet bij een plek. */
|
|
95
|
+
function byLine(a, b) {
|
|
96
|
+
return (a ?? Number.MAX_SAFE_INTEGER) - (b ?? Number.MAX_SAFE_INTEGER);
|
|
97
|
+
}
|
|
98
|
+
function byPlace(a, b) {
|
|
99
|
+
return a.file.localeCompare(b.file) || byLine(a.lines[0] ?? null, b.lines[0] ?? null) || a.message.localeCompare(b.message);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../src/compare.ts"],"names":[],"mappings":"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"}
|