phpstan-mcp-mx 0.18.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/README.md +165 -4
- package/dist/changed.d.ts +35 -0
- package/dist/changed.js +80 -2
- package/dist/changed.js.map +1 -1
- package/dist/compare.d.ts +69 -0
- package/dist/compare.js +101 -0
- package/dist/compare.js.map +1 -0
- package/dist/composer.d.ts +68 -0
- package/dist/composer.js +313 -0
- package/dist/composer.js.map +1 -0
- package/dist/dumptype.d.ts +86 -0
- package/dist/dumptype.js +190 -0
- package/dist/dumptype.js.map +1 -0
- package/dist/failure.d.ts +1 -1
- package/dist/failure.js.map +1 -1
- package/dist/phpstan.d.ts +40 -2
- package/dist/phpstan.js +108 -6
- package/dist/phpstan.js.map +1 -1
- package/dist/project.d.ts +15 -0
- package/dist/project.js +54 -3
- package/dist/project.js.map +1 -1
- package/dist/report.d.ts +37 -1
- package/dist/report.js +134 -4
- package/dist/report.js.map +1 -1
- package/dist/runs.d.ts +26 -1
- package/dist/runs.js +22 -3
- package/dist/runs.js.map +1 -1
- package/dist/tools/analysis.js +47 -5
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/inspect.d.ts +2 -0
- package/dist/tools/inspect.js +178 -18
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/prompts.js +28 -18
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/shared.d.ts +46 -0
- package/dist/tools/shared.js +83 -7
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools.js +2 -1
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,31 @@
|
|
|
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
|
+
|
|
24
|
+
# [0.19.0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/compare/v0.18.0...v0.19.0) (2026-09-11)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Features
|
|
28
|
+
|
|
29
|
+
* add inspect_type to show the type PHPStan infers at a line ([07bf412](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/07bf41229d90dd83597bfff0e8258c240cf3741a))
|
|
30
|
+
|
|
6
31
|
# [0.18.0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/compare/v0.17.0...v0.18.0) (2026-09-10)
|
|
7
32
|
|
|
8
33
|
|
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
|
|
@@ -473,6 +500,44 @@ is the only thing that changed does not count as new. The notice doesn't pass ju
|
|
|
473
500
|
ignore can be justified, the point is that it doesn't happen silently. Ignored errors that
|
|
474
501
|
disappeared from the baseline are listed too.
|
|
475
502
|
|
|
503
|
+
### `inspect_type`
|
|
504
|
+
|
|
505
|
+
Shows the type PHPStan infers for one or more expressions at a given line — what you need
|
|
506
|
+
before fixing a type error, and exactly what PHPStan's own guidance asks you not to override
|
|
507
|
+
with a cast, `assert()` or an inline `@var`.
|
|
508
|
+
|
|
509
|
+
| Argument | Required | Meaning |
|
|
510
|
+
| --- | --- | --- |
|
|
511
|
+
| `project` | yes | absolute path to the project root |
|
|
512
|
+
| `path` | yes | one PHP file inside the project |
|
|
513
|
+
| `line` | yes | the types are those right before this line runs |
|
|
514
|
+
| `expressions` | yes | 1 to 10 PHP expressions, e.g. `["$user", "$request->input('id')"]` |
|
|
515
|
+
| `config` | no | a different config file; must lie inside the project |
|
|
516
|
+
| `memoryLimit` / `timeoutSeconds` | no | as with the analysis tools |
|
|
517
|
+
|
|
518
|
+
```
|
|
519
|
+
Types right before line 37 of src/Actions/Contract/BuildContractRowsAction.php:
|
|
520
|
+
- $index: int<0, max>
|
|
521
|
+
- $accessory['price'] ?? null: float|int|numeric-string|null
|
|
522
|
+
- $nope: *ERROR*
|
|
523
|
+
variable.undefined: Undefined variable: $nope
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
The project is not changed. The server inserts `\PHPStan\dumpType(<expression>);` before
|
|
527
|
+
`line` in a temporary copy of the file — one line per expression — and has PHPStan read that
|
|
528
|
+
copy in place of the original (PHPStan's editor mode, `--tmp-file` and `--instead-of`). The
|
|
529
|
+
copy lives in the server's temp directory, or with `PHPSTAN_MCP_RUNNERS` in the temp
|
|
530
|
+
directory of that environment, like the config of `unmatched_ignores`. Only that one file is
|
|
531
|
+
analysed, so it also works for a file outside the `paths` of your config and doesn't need a
|
|
532
|
+
warm result cache; on a real project it took one to two seconds.
|
|
533
|
+
|
|
534
|
+
`line` has to be the first line of a statement inside a function or method. Anywhere else —
|
|
535
|
+
in the middle of an array literal that spans several lines, directly in a class body — the
|
|
536
|
+
inserted line breaks the file, and you get PHPStan's parse errors back instead of types, with
|
|
537
|
+
the line numbers of your original file. A file under `excludePaths` fails with the reason
|
|
538
|
+
`nothing_to_analyse`. Editor mode needs a recent PHPStan; an older one fails with a message
|
|
539
|
+
that says to update it.
|
|
540
|
+
|
|
476
541
|
### `server_config`
|
|
477
542
|
|
|
478
543
|
Returns what *this* server is running with: the project directories in reach, the default
|
|
@@ -532,6 +597,38 @@ The level shows up here even when it is set in a shared config from `vendor/`, a
|
|
|
532
597
|
directory is the one `clear_result_cache` clears. If the application doesn't boot (Larastan
|
|
533
598
|
without the extensions the app needs), this part is missing, with the reason stated.
|
|
534
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
|
+
|
|
535
632
|
### `clear_result_cache`
|
|
536
633
|
|
|
537
634
|
Clears PHPStan's result cache, so the next analysis recomputes everything. Useful when a
|
|
@@ -560,6 +657,21 @@ Note the distinction: what is in here is exactly what `analyse_project` does *no
|
|
|
560
657
|
project that includes its baseline only reports the errors that are new — PHPStan already
|
|
561
658
|
makes that comparison itself.
|
|
562
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
|
+
|
|
563
675
|
With `path` (e.g. `"app/Models/User.php"`) you also get the entries for that one file: per
|
|
564
676
|
entry the identifier, the count and the pattern. That file doesn't have to exist any more —
|
|
565
677
|
it is precisely a deleted file that the entries doing nothing belong to.
|
|
@@ -680,7 +792,8 @@ you can act on.
|
|
|
680
792
|
|
|
681
793
|
`reason` comes from a closed set, so you can match on it without reading the text:
|
|
682
794
|
`no_roots_configured`, `project_outside_roots`, `project_not_found`, `path_outside_project`,
|
|
683
|
-
`path_not_found`, `
|
|
795
|
+
`path_not_found`, `invalid_argument`, `nothing_to_analyse`, `phpstan_missing`,
|
|
796
|
+
`config_missing`, `bootstrap_failed`,
|
|
684
797
|
`baseline_unreadable`, `invalid_setting`, `memory_limit`, `timeout`, `cancelled`,
|
|
685
798
|
`git_missing`, `not_a_git_repository`, `unknown_base`, `unsupported_with_runner`,
|
|
686
799
|
`unusable_output` and `phpstan_failed`.
|
|
@@ -710,6 +823,20 @@ src/Support/Filters/DealFilters.php
|
|
|
710
823
|
42 argument.type Parameter #1 $id expects int, string given.
|
|
711
824
|
```
|
|
712
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
|
+
|
|
713
840
|
When there are more results, the text ends with the literal follow-up call:
|
|
714
841
|
|
|
715
842
|
```
|
|
@@ -719,13 +846,39 @@ then comes from this result instead of a new analysis.
|
|
|
719
846
|
|
|
720
847
|
With that `runId`, the next page comes from the same result. Without it, every page would be a
|
|
721
848
|
new analysis, and if you change a file in between you get pages with different totals. Only
|
|
722
|
-
`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
|
|
723
851
|
different arguments, has expired (after ten minutes) or is unknown, a new analysis follows
|
|
724
852
|
with a notice instead of an error.
|
|
725
853
|
|
|
726
854
|
A page from an earlier result states how old that result is. So after a fix, analyse
|
|
727
855
|
*without* `runId`: otherwise you see the result from before the fix.
|
|
728
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
|
+
|
|
729
882
|
### Cancelling
|
|
730
883
|
|
|
731
884
|
If your client cancels the request, PHPStan's whole process group is cleaned up instead of
|
|
@@ -799,6 +952,14 @@ How many were left out is in `omitted`, and in the text as "N more message(s) no
|
|
|
799
952
|
different environment. The Claude app, for example, starts it without `TMPDIR`, and then the
|
|
800
953
|
per-project cache lives under `/tmp/phpstan-mcp/` instead of under your shell's temp
|
|
801
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.
|
|
802
963
|
|
|
803
964
|
## Development
|
|
804
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":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE3D,+EAA+E;AAC/E,MAAM,OAAO,QAAS,SAAQ,WAAW;IACvC,YAAY,OAAe,EAAE,SAAwB,aAAa,EAAE,UAA0B,EAAE;QAC9F,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAEnC;;;GAGG;AACH,MAAM,cAAc,GAAG,MAAM,CAAC;AAkC9B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAwB,EACxB,OAAe,YAAY,EAC3B,MAAM,GAAG,KAAK;IAEd,+EAA+E;IAC/E,8EAA8E;IAC9E,EAAE;IACF,gFAAgF;IAChF,iFAAiF;IACjF,iFAAiF;IACjF,kFAAkF;IAClF,gFAAgF;IAChF,+BAA+B;IAC/B,+EAA+E;IAC/E,+CAA+C;IAC/C,MAAM,KAAK,GAAG;QACZ,YAAY;QACZ,oBAAoB;QACpB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,kBAAkB;QAClB,SAAS,CAAC,IAAI,CAAC;KAChB,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IAE3E,kFAAkF;IAClF,gFAAgF;IAChF,2DAA2D;IAC3D,EAAE;IACF,qFAAqF;IACrF,kFAAkF;IAClF,gFAAgF;IAChF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;QACpC,MAAM;QACN,KAAK;QACL,aAAa;QACb,YAAY;QACZ,eAAe;QACf,eAAe;QACf,GAAG,KAAK;KACT,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhD,gFAAgF;IAChF,qFAAqF;IACrF,MAAM,SAAS,GAAG,MAAM;QACtB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;SAC3D,MAAM,CAAC,eAAe,CAAC;SACvB,IAAI,EAAE,CAAC;IAEV,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;IACrD,MAAM,YAAY,GAAqB,EAAE,CAAC;IAE1C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,wEAAwE;YACxE,8EAA8E;YAC9E,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,uEAAuE;YACvE,2EAA2E;YAC3E,6EAA6E;YAC7E,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACpF,0EAA0E;YAC1E,YAAY,CAAC,IAAI,CACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;gBACtB,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC;gBAChC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CACzD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2EAA2E;YAC3E,0EAA0E;YAC1E,2EAA2E;YAC3E,YAAY;YACZ,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7E,CAAC;AAED,uEAAuE;AACvE,MAAM,MAAM,GAAG,sDAAsD,CAAC;AAEtE,SAAS,QAAQ,CAAC,OAAe;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO;QACL,IAAI,EAAE,kBAAkB,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,4EAA4E;QAC5E,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;KACrD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,MAAsC;IACvD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI;SAC5B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,KAAK,CAAC,QAAQ,CAAC;SACf,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;SAC7B,IAAI,EAAE,CAAC;IACV,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACnD,CAAC;AAQD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,IAAI,OAAO,GAAyB,IAAI,CAAC;IACzC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS;YACpC,SAAS,EAAE,CAAC;YACZ,IAAI,OAAO,KAAK,IAAI;gBAAE,SAAS;YAE/B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,MAAM,KAAK,IAAI;oBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;gBACtE,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,MAAM,KAAK,IAAI;oBAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACnE,IAAI,OAAO,KAAK,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAC5B,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sFAAsF;AACtF,SAAS,UAAU,CAAC,IAAY,EAAE,OAAkC;IAClE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;;YAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yDAAyD;AACzD,SAAS,aAAa,CAAC,IAAY,EAAE,IAAY;IAC/C,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAWD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAwB,EACxB,OAAe,YAAY,EAC3B,MAAM,GAAG,KAAK;IAEd,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,gFAAgF;QAChF,oEAAoE;QACpE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACtG,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAEzE,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAuE,EAAE,CAAC;QACrF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;gBAChB,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI;YAAE,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,OAAuE;IAC5F,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,MAAc;IAChD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;IACtG,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACrD,IAAI,+CAA+C,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5E,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAqB,EAAE,IAAY,EAAE,IAAmB;IACtF,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,IAAI,OAAO,GAAuB,IAAI,CAAC;IACvC,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,4EAA4E;YAC5E,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,0EAA0E;YAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,IAAI,OAAO,KAAK,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;QAE5B,yEAAyE;QACzE,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAChB,IAAI,IAAI,yEAAyE;YAC/E,oEAAoE,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,KAAK,CAAC,MAAc;IAC3B,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,GAAW,EAAE,IAAc;IAC5C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAEtE,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,QAAQ,CAChB,UAAU,CAAC,IAAI,KAAK,QAAQ;YAC1B,CAAC,CAAC,uEAAuE;YACzE,CAAC,CAAC,+BAA+B,GAAG,KAAK,UAAU,CAAC,OAAO,EAAE,EAC/D,aAAa,CACd,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,mDAAmD,CAAC,IAAI,CAAC,OAAO,CAAC;gBACjE,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,aAAa,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,GAAW,EACX,IAAuB,EACvB,MAAc,EACd,IAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAE7C,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,OAAO,CACL,GAAG,GAAG,6DAA6D;YACnE,0CAA0C,CAC3C,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,mEAAmE;IACnE,IAAI,mDAAmD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,CACL,sBAAsB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;YAChE,kEAAkE,CACnE,CAAC;IACJ,CAAC;IAED,OAAO,iBAAiB,GAAG,eAAe,IAAI,IAAI,GAAG,SAAS,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAC1G,CAAC;AASD,SAAS,OAAO,CAAC,GAAW,EAAE,IAAuB;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,+EAA+E;QAC/E,gFAAgF;QAChF,EAAE;QACF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,wEAAwE;QACxE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QAEtG,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,UAAU,GAAiC,IAAI,CAAC;QAEpD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;QAC1E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
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;
|