Skip to content

Commit 72c2a8d

Browse files
committed
Moved the list of relative paths in parameters to parametersSchema.neon
This can now be extended by extensions and project configs!
1 parent 02066c7 commit 72c2a8d

8 files changed

+66
-28
lines changed

build/ignore-by-architecture.neon.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
<?php declare(strict_types = 1);
22

3-
use PHPStan\DependencyInjection\NeonAdapter;
4-
5-
$adapter = new NeonAdapter();
6-
73
if (PHP_INT_SIZE === 4) {
8-
return $adapter->load(__DIR__ . '/baseline-32bit.neon');
4+
$config = [];
5+
$config['includes'] = [
6+
__DIR__ . '/baseline-32bit.neon',
7+
];
8+
9+
return $config;
910
}
1011

1112
return [];

conf/config.neon

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ parameters:
209209

210210
extensions:
211211
rules: PHPStan\DependencyInjection\RulesExtension
212+
expandRelativePaths: PHPStan\DependencyInjection\ExpandRelativePathExtension
212213
conditionalTags: PHPStan\DependencyInjection\ConditionalTagsExtension
213214
parametersSchema: PHPStan\DependencyInjection\ParametersSchemaExtension
214215
validateIgnoredErrors: PHPStan\DependencyInjection\ValidateIgnoredErrorsExtension

conf/parametersSchema.neon

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,3 +197,22 @@ parametersSchema:
197197
# internal - editor mode
198198
singleReflectionFile: schema(string(), nullable())
199199
singleReflectionInsteadOfFile: schema(string(), nullable())
200+
201+
expandRelativePaths:
202+
- '[parameters][paths][]'
203+
- '[parameters][excludePaths][]'
204+
- '[parameters][excludePaths][analyse][]'
205+
- '[parameters][excludePaths][analyseAndScan][]'
206+
- '[parameters][ignoreErrors][][paths][]'
207+
- '[parameters][ignoreErrors][][path]'
208+
- '[parameters][bootstrapFiles][]'
209+
- '[parameters][scanFiles][]'
210+
- '[parameters][scanDirectories][]'
211+
- '[parameters][tmpDir]'
212+
- '[parameters][pro][tmpDir]'
213+
- '[parameters][memoryLimitFile]'
214+
- '[parameters][benchmarkFile]'
215+
- '[parameters][stubFiles][]'
216+
- '[parameters][symfony][consoleApplicationLoader]'
217+
- '[parameters][symfony][containerXmlPath]'
218+
- '[parameters][doctrine][objectManagerLoader]'

src/Command/CommandHelper.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,10 @@ public static function begin(
257257
$containerFactory->getRootDirectory(),
258258
$containerFactory->getCurrentWorkingDirectory(),
259259
$generateBaselineFile,
260+
[
261+
'[parameters][paths][]',
262+
'[parameters][tmpDir]',
263+
],
260264
))->createLoader();
261265

262266
try {

src/DependencyInjection/ContainerFactory.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ public function create(
120120
$this->rootDirectory,
121121
$this->currentWorkingDirectory,
122122
$generateBaselineFile,
123+
$projectConfig['expandRelativePaths'],
123124
), $this->journalContainer);
124125
$configurator->defaultExtensions = [
125126
'php' => PhpExtension::class,
@@ -222,7 +223,7 @@ private function detectDuplicateIncludedFiles(
222223
array $loaderParameters,
223224
): array
224225
{
225-
$neonAdapter = new NeonAdapter();
226+
$neonAdapter = new NeonAdapter([]);
226227
$phpAdapter = new PhpAdapter();
227228
$allConfigFiles = [];
228229
$configArray = [];
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace PHPStan\DependencyInjection;
4+
5+
use Nette\DI\CompilerExtension;
6+
use Nette\Schema\Expect;
7+
use Nette\Schema\Schema;
8+
9+
final class ExpandRelativePathExtension extends CompilerExtension
10+
{
11+
12+
public function getConfigSchema(): Schema
13+
{
14+
return Expect::listOf('string');
15+
}
16+
17+
}

src/DependencyInjection/LoaderFactory.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,26 @@
99
final class LoaderFactory
1010
{
1111

12+
/**
13+
* @param list<string> $expandRelativePaths
14+
*/
1215
public function __construct(
1316
private FileHelper $fileHelper,
1417
private string $rootDir,
1518
private string $currentWorkingDirectory,
1619
private ?string $generateBaselineFile,
20+
private array $expandRelativePaths,
1721
)
1822
{
1923
}
2024

2125
public function createLoader(): Loader
2226
{
27+
$neonAdapter = new NeonAdapter($this->expandRelativePaths);
28+
2329
$loader = new NeonLoader($this->fileHelper, $this->generateBaselineFile);
24-
$loader->addAdapter('dist', NeonAdapter::class);
25-
$loader->addAdapter('neon', NeonAdapter::class);
30+
$loader->addAdapter('dist', $neonAdapter);
31+
$loader->addAdapter('neon', $neonAdapter);
2632
$loader->setParameters([
2733
'rootDir' => $this->rootDir,
2834
'currentWorkingDirectory' => $this->currentWorkingDirectory,

src/DependencyInjection/NeonAdapter.php

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,20 @@
2929
final class NeonAdapter implements Adapter
3030
{
3131

32-
public const CACHE_KEY = 'v30-no-underscore';
32+
public const CACHE_KEY = 'v31-expand-relative-paths';
3333

3434
private const PREVENT_MERGING_SUFFIX = '!';
3535

3636
/** @var FileHelper[] */
3737
private array $fileHelpers = [];
3838

39+
/**
40+
* @param list<string> $expandRelativePaths
41+
*/
42+
public function __construct(private array $expandRelativePaths)
43+
{
44+
}
45+
3946
/**
4047
* @return mixed[]
4148
*/
@@ -117,25 +124,7 @@ public function process(array $arr, string $fileKey, string $file): array
117124
}
118125
}
119126

120-
if (in_array($keyToResolve, [
121-
'[parameters][paths][]',
122-
'[parameters][excludePaths][]',
123-
'[parameters][excludePaths][analyse][]',
124-
'[parameters][excludePaths][analyseAndScan][]',
125-
'[parameters][ignoreErrors][][paths][]',
126-
'[parameters][ignoreErrors][][path]',
127-
'[parameters][bootstrapFiles][]',
128-
'[parameters][scanFiles][]',
129-
'[parameters][scanDirectories][]',
130-
'[parameters][tmpDir]',
131-
'[parameters][pro][tmpDir]',
132-
'[parameters][memoryLimitFile]',
133-
'[parameters][benchmarkFile]',
134-
'[parameters][stubFiles][]',
135-
'[parameters][symfony][consoleApplicationLoader]',
136-
'[parameters][symfony][containerXmlPath]',
137-
'[parameters][doctrine][objectManagerLoader]',
138-
], true) && is_string($val) && !str_contains($val, '%') && !str_starts_with($val, '*')) {
127+
if (in_array($keyToResolve, $this->expandRelativePaths, true) && is_string($val) && !str_contains($val, '%') && !str_starts_with($val, '*')) {
139128
$fileHelper = $this->createFileHelperByFile($file);
140129
$val = $fileHelper->normalizePath($fileHelper->absolutizePath($val));
141130
}

0 commit comments

Comments
 (0)