1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-26 12:24:49 +01:00

Analyse scoped build with Psalm

This commit is contained in:
Matthew Brown 2018-03-18 10:52:54 -04:00
parent 025b7049fd
commit 83811e6e8a
3 changed files with 97 additions and 1 deletions

View File

@ -21,6 +21,12 @@ php -d memory_limit=-1 `which php-scoper` add-prefix --prefix='PsalmPhar' --outp
# and optimize the loader
composer dump-autoload --working-dir=build/psalm --classmap-authoritative --no-dev
chmod 755 build/psalm/psalm
cp bin/phar.psalm.xml build/psalm/psalm.xml
./build/psalm/psalm --config=build/psalm/psalm.xml --root=build/psalm
php -d memory_limit=-1 -d phar.readonly=0 `which box` compile
# clean up build

60
bin/phar.psalm.xml Normal file
View File

@ -0,0 +1,60 @@
<?xml version="1.0"?>
<psalm
name="Psalm for Psalm"
useDocblockTypes="true"
totallyTyped="true"
strictBinaryOperands="false"
rememberPropertyAssignmentsAfterCall="true"
throwExceptionOnError="0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="../../config.xsd"
>
<projectFiles>
<directory name="src" />
<ignoreFiles>
<file name="src/Psalm/CallMap.php" />
<directory name="src/Psalm/Stubs" />
</ignoreFiles>
</projectFiles>
<issueHandlers>
<MisplacedRequiredParam errorLevel="suppress" />
<PossiblyNullOperand errorLevel="suppress" />
<MissingConstructor errorLevel="suppress" />
<DeprecatedProperty errorLevel="suppress" />
<LessSpecificReturnType>
<errorLevel type="suppress">
<file name="src/Psalm/Plugin.php" />
</errorLevel>
</LessSpecificReturnType>
<UnusedProperty>
<errorLevel type="info">
<file name="src/Psalm/FileManipulation/FunctionDocblockManipulator.php" />
</errorLevel>
</UnusedProperty>
<PossiblyUnusedProperty>
<errorLevel type="info">
<file name="src/Psalm/Storage/FunctionLikeStorage.php" />
</errorLevel>
</PossiblyUnusedProperty>
<PossiblyUnusedMethod>
<errorLevel type="suppress">
<file name="src/Psalm/Type/Atomic/GenericTrait.php" />
<file name="src/Psalm/Plugin.php" />
</errorLevel>
<errorLevel type="info">
<file name="src/Psalm/Codebase.php" />
</errorLevel>
</PossiblyUnusedMethod>
<PropertyNotSetInConstructor>
<errorLevel type="suppress">
<file name="src/Psalm/Config.php" />
</errorLevel>
</PropertyNotSetInConstructor>
</issueHandlers>
</psalm>

View File

@ -57,17 +57,47 @@ return [
return $contents;
},
function ($filePath, $prefix, $contents) {
if (strpos($filePath, realpath(__DIR__ . '/src/Psalm')) === 0) {
return str_replace(
[' \\Psalm\\', ' \\PhpParser\\'],
[' \\' . $prefix . '\\Psalm\\', ' \\' . $prefix . '\\PhpParser\\'],
$contents
);
}
return $contents;
},
function ($filePath, $prefix, $contents) {
if (strpos($filePath, realpath(__DIR__ . '/vendor/openlss')) === 0) {
return str_replace(
$prefix . '\\DomDocument',
'DomDocument',
$contents
);
}
return $contents;
},
function ($filePath, $prefix, $contents) {
if ($filePath === realpath(__DIR__ . '/src/Psalm/PropertyMap.php')
|| $filePath === realpath(__DIR__ . '/src/Psalm/CallMap.php')
|| $filePath === realpath(__DIR__ . '/src/Psalm/Stubs/CoreGenericFunctions.php')
|| $filePath === realpath(__DIR__ . '/src/Psalm/Stubs/CoreGenericClasses.php')
) {
return str_replace(
$contents = str_replace(
['namespace ' . $prefix . ';', $prefix . '\\\\', $prefix . '\\'],
'',
$contents
);
$contents = str_replace(
['\'phpparser\\\\', 'PhpParser\\\\'],
['\'' . strtolower($prefix) . '\\\\phpparser\\\\', $prefix . '\\\\PhpParser\\\\'],
$contents
);
return str_replace('Psalm\\\\', $prefix . '\\\\Psalm\\\\', $contents);
}
return $contents;