# Dealing with code issues Psalm has a large number of [code issues](issues.md). Each project can specify its own reporting level for a given issue. Code issue levels in Psalm fall into three categories: - `error`
This will cause Psalm to print a message, and to ultimately terminate with a non-zero exit status - `info`
This will cause Psalm to print a message - `suppress`
This will cause Psalm to ignore the code issue entirely The third category, `suppress`, is the one you will probably be most interested in, especially when introducing Psalm to a large codebase. ## Suppressing issues There are two ways to suppress an issue – via the Psalm config or via a function docblock. ### Config suppression You can use the `` tag in the config file to influence how issues are treated. Some issue types allow the use of `referencedMethod`, `referencedClass` or `referencedVariable` to isolate known trouble spots. ```xml ``` ### Docblock suppression You can also use `@psalm-suppress IssueName` on a function's docblock to suppress Psalm issues e.g. ```php user_defined && !$storage->is_interface && \class_exists($storage->name) && (new ReflectionClass($storage->name))->implementsInterface(\Your\Interface::class) ) { $storage->suppressed_issues[-1] = 'PropertyNotSetInConstructor'; } } } ```