Error levels

You can run Psalm in at different levels of strictness from 1 to 8.

Level 1 is the most strict, level 8 is the most lenient.

Some issues are always treated as errors. These are issues with a very low probability of false-positives.

At level 1 all issues (except those emitted for opt-in features) that Psalm can find are treated as errors. Those issues include any situation where Psalm cannot infer the type of a given expression.

At level 2 Psalm ignores those Mixed* issues, but treats most other issues as errors.

At level 3 Psalm starts to be a little more lenient. For example Psalm allows missing param types, return types and property types.

At level 4 Psalm ignores issues for possible problems. These are more likely to be false positives – where the application code may guarantee behaviour that Psalm isn't able to infer.

Level 5 and above allows a more non-verifiable code, and higher levels are even more permissive.

Always treated as errors

Errors that only appear at level 1

Errors ignored at level 3 and higher

These issues are treated as errors at level 2 and below.

Errors ignored at level 4 and higher

These issues are treated as errors at level 3 and below.

Errors ignored at level 5 and higher

These issues are treated as errors at level 4 and below.

Errors ignored at level 6 and higher

These issues are treated as errors at level 5 and below.

Errors ignored at level 7 and higher

These issues are treated as errors at level 6 and below.

Errors ignored at level 8

These issues are treated as errors at level 7 and below.

Feature-specific errors