1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-26 20:34:47 +01:00

Hide Mixed* issues under a totallyTyped config flag

This commit is contained in:
Matthew Brown 2016-12-18 19:17:39 -05:00
parent 52b3e1ba8c
commit 9a32b5fd40
4 changed files with 30 additions and 9 deletions

View File

@ -3,21 +3,13 @@
name="Example Psalm config with recommended defaults"
stopOnFirstError="false"
useDocblockTypes="true"
totallyTyped="false"
>
<inspectFiles>
<directory name="src" />
</inspectFiles>
<issueHandler>
<MixedArrayAccess errorLevel="suppress" />
<MixedArrayOffset errorLevel="suppress" />
<MixedAssignment errorLevel="suppress" />
<MixedArgument errorLevel="suppress" />
<MixedMethodCall errorLevel="suppress" />
<MixedPropertyFetch errorLevel="suppress" />
<MixedPropertyAssignment errorLevel="suppress" />
<MixedInferredReturnType errorLevel="suppress" />
<InvalidDocblock errorLevel="info" />
<MissingPropertyType errorLevel="info" />
<MissingReturnType errorLevel="info" />

View File

@ -3,6 +3,7 @@
name="Psalm for Psalm"
stopOnFirstError="false"
useDocblockTypes="true"
totallyTyped="true"
>
<inspectFiles>
<directory name="src" />

View File

@ -22,6 +22,21 @@ class Config
self::REPORT_SUPPRESS
];
/**
* @var array
*/
protected static $MIXED_ISSUES = [
'MixedArgument',
'MixedArrayAccess',
'MixedArrayOffset',
'MixedAssignment',
'MixedInferredReturnType',
'MixedMethodCall',
'MixedPropertyFetch',
'MixedPropertyAssignment',
'MixedStringOffsetAssignment'
];
/**
* @var self|null
*/
@ -114,6 +129,9 @@ class Config
/** @var bool */
public $allow_includes = true;
/** @var bool */
public $totally_typed = false;
/**
* Psalm plugins
*
@ -195,6 +213,11 @@ class Config
$config->allow_includes = $attribute_text === 'true' || $attribute_text === '1';
}
if (isset($config_xml['totallyTyped'])) {
$attribute_text = (string) $config_xml['totallyTyped'];
$config->totally_typed = $attribute_text === 'true' || $attribute_text === '1';
}
if (isset($config_xml->inspectFiles)) {
$config->inspect_files = FileFilter::loadFromXML($config_xml->inspectFiles, true);
}
@ -349,6 +372,10 @@ class Config
*/
public function excludeIssueInFile($issue_type, $file_name)
{
if (!$this->totally_typed && in_array($issue_type, self::$MIXED_ISSUES)) {
return true;
}
if ($this->getReportingLevel($issue_type) === self::REPORT_SUPPRESS) {
return true;
}

View File

@ -11,5 +11,6 @@ class TestConfig extends Config
$this->throw_exception = true;
$this->use_docblock_types = true;
$this->totally_typed = true;
}
}