|
1 | 1 | <?php |
2 | 2 | namespace Psalm; |
3 | 3 |
|
4 | | -use Psalm\Plugin\EventHandler\Event\AfterAnalysisEvent; |
5 | | -use Psalm\Report\PhpStormReport; |
6 | | -use function array_pop; |
7 | | -use function array_search; |
8 | | -use function array_splice; |
9 | | -use function count; |
10 | | -use function debug_print_backtrace; |
11 | | -use function dirname; |
12 | | -use function explode; |
13 | | -use function file_put_contents; |
14 | | -use function fwrite; |
15 | | -use function get_class; |
16 | | -use function is_dir; |
17 | | -use function memory_get_peak_usage; |
18 | | -use function mkdir; |
19 | | -use function microtime; |
20 | | -use function number_format; |
21 | | -use function ob_get_clean; |
22 | | -use function ob_start; |
23 | | -use function sprintf; |
24 | 4 | use Psalm\Internal\Analyzer\IssueData; |
25 | 5 | use Psalm\Internal\Analyzer\ProjectAnalyzer; |
26 | 6 | use Psalm\Internal\ExecutionEnvironment\BuildInfoCollector; |
27 | 7 | use Psalm\Issue\CodeIssue; |
28 | 8 | use Psalm\Issue\UnusedPsalmSuppress; |
| 9 | +use Psalm\Plugin\EventHandler\Event\AfterAnalysisEvent; |
29 | 10 | use Psalm\Report\CheckstyleReport; |
30 | 11 | use Psalm\Report\CodeClimateReport; |
31 | 12 | use Psalm\Report\CompactReport; |
32 | 13 | use Psalm\Report\ConsoleReport; |
33 | 14 | use Psalm\Report\EmacsReport; |
34 | 15 | use Psalm\Report\GithubActionsReport; |
35 | | -use Psalm\Report\SarifReport; |
36 | 16 | use Psalm\Report\JsonReport; |
37 | 17 | use Psalm\Report\JsonSummaryReport; |
38 | 18 | use Psalm\Report\JunitReport; |
| 19 | +use Psalm\Report\PhpStormReport; |
39 | 20 | use Psalm\Report\PylintReport; |
| 21 | +use Psalm\Report\SarifReport; |
40 | 22 | use Psalm\Report\SonarqubeReport; |
41 | 23 | use Psalm\Report\TextReport; |
42 | 24 | use Psalm\Report\XmlReport; |
| 25 | + |
| 26 | +use function array_merge; |
| 27 | +use function array_pop; |
| 28 | +use function array_search; |
| 29 | +use function array_splice; |
| 30 | +use function array_values; |
| 31 | +use function count; |
| 32 | +use function debug_print_backtrace; |
| 33 | +use function dirname; |
| 34 | +use function explode; |
| 35 | +use function file_put_contents; |
| 36 | +use function fwrite; |
| 37 | +use function get_class; |
| 38 | +use function in_array; |
| 39 | +use function is_dir; |
| 40 | +use function memory_get_peak_usage; |
| 41 | +use function microtime; |
| 42 | +use function mkdir; |
| 43 | +use function number_format; |
| 44 | +use function ob_get_clean; |
| 45 | +use function ob_start; |
43 | 46 | use function sha1; |
| 47 | +use function sprintf; |
44 | 48 | use function str_repeat; |
45 | 49 | use function str_replace; |
46 | 50 | use function usort; |
47 | | -use function array_merge; |
48 | | -use function array_values; |
49 | | -use function in_array; |
| 51 | + |
50 | 52 | use const DEBUG_BACKTRACE_IGNORE_ARGS; |
51 | 53 | use const STDERR; |
52 | 54 |
|
@@ -93,6 +95,9 @@ class IssueBuffer |
93 | 95 | */ |
94 | 96 | protected static $used_suppressions = []; |
95 | 97 |
|
| 98 | + /** @var array<array-key,mixed> */ |
| 99 | + private static $server = []; |
| 100 | + |
96 | 101 | /** |
97 | 102 | * @param string[] $suppressed_issues |
98 | 103 | * |
@@ -441,7 +446,6 @@ public static function addIssues(array $issues_data): void |
441 | 446 | */ |
442 | 447 | public static function finish( |
443 | 448 | ProjectAnalyzer $project_analyzer, |
444 | | - BuildInfoCollector $build_info_collector, |
445 | 449 | bool $is_full, |
446 | 450 | float $start_time, |
447 | 451 | bool $add_stats = false, |
@@ -543,12 +547,13 @@ function (IssueData $d1, IssueData $d2) : int { |
543 | 547 | } |
544 | 548 | } |
545 | 549 |
|
546 | | - $source_control_info = null; |
547 | | - $build_info = $build_info_collector->collect(); |
548 | 550 |
|
549 | 551 | if ($codebase->config->eventDispatcher->after_analysis |
550 | 552 | || $codebase->config->eventDispatcher->legacy_after_analysis |
551 | 553 | ) { |
| 554 | + $source_control_info = null; |
| 555 | + $build_info = (new BuildInfoCollector(self::$server))->collect(); |
| 556 | + |
552 | 557 | try { |
553 | 558 | $source_control_info = (new \Psalm\Internal\ExecutionEnvironment\GitInfoCollector())->collect(); |
554 | 559 | } catch (\RuntimeException $e) { |
@@ -861,4 +866,13 @@ public static function bubbleUp(CodeIssue $e): void |
861 | 866 |
|
862 | 867 | self::$recorded_issues[self::$recording_level][] = $e; |
863 | 868 | } |
| 869 | + |
| 870 | + /** |
| 871 | + * @internal |
| 872 | + * @param array<array-key,mixed> $server |
| 873 | + */ |
| 874 | + final public static function captureServer(array $server): void |
| 875 | + { |
| 876 | + self::$server = $server; |
| 877 | + } |
864 | 878 | } |
0 commit comments