<?xml version="1.0"?>
<psalm
    name="SimpleSAMLphp"
    useDocblockTypes="true"
    errorLevel="2"
    reportMixedIssues="false"
    hideExternalErrors="true"
    allowStringToStandInForClass="true"
>
    <projectFiles>
        <directory name="src" />
        <directory name="tests" />

        <!-- Ignore certain directories -->
        <ignoreFiles>
            <directory name="vendor" />
        </ignoreFiles>
    </projectFiles>

    <issueHandlers>
        <LessSpecificReturnType errorLevel="info" />

        <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives -->
        <DeprecatedClass errorLevel="info" />
        <DeprecatedMethod errorLevel="info" />

        <MissingClosureReturnType errorLevel="info" />
        <MissingReturnType errorLevel="info" />
        <MissingPropertyType errorLevel="info" />
        <InvalidDocblock errorLevel="info" />

        <PropertyNotSetInConstructor errorLevel="info" />
        <MissingConstructor errorLevel="info" />
        <MissingClosureParamType errorLevel="info" />
        <MissingParamType errorLevel="info" />
        <UnusedClass errorLevel="info" />
        <PossiblyUnusedMethod errorLevel="info" />

        <!-- Ignore these errors until we are fully typehinted -->
        <DocblockTypeContradiction errorLevel="suppress" />
        <RedundantConditionGivenDocblockType errorLevel="suppress" />

        <!-- Ignore UnresolvableInclude on CLI-scripts -->
        <UnresolvableInclude>
            <errorLevel type="suppress">
                <file name="tests/bootstrap.php" />
            </errorLevel>
        </UnresolvableInclude>
    </issueHandlers>
</psalm>
