# 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
getStorage();
if ($storage->user_defined
&& !$storage->is_interface
&& \class_exists($storage->name)
&& (new ReflectionClass($storage->name))->implementsInterface(\Your\Interface::class)
) {
$storage->suppressed_issues[-1] = 'PropertyNotSetInConstructor';
}
}
}
```