Skip to content

docs: rule suppressions #443

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions docs/rule_suppressions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Rule Suppressions

You can suppress specific diagnostics or rules in your code using suppression comments. This is useful when you want to ignore a particular rule for an entire file, a line or a block of code.

## How to Suppress a Rule

To suppress a rule, add a comment above the line causing the diagnostic with the following format:

```sql
-- pgt-ignore lint/safety/banDropTable
drop table users;
```

You can suppress single rules, groups of rules, or entire categories. The format of the rule to suppress is:

`category(/group(/specific-rule))`

Where group and specific rule are optional.

So, to suppress the `lint/safety/banDropTable` diagnostic, all of these would work:

```sql
-- pgt-ignore lint
-- pgt-ignore lint/safety
-- pgt-ignore lint/safety/banDropTable
```

You can also add an explanation to the suppression by adding a `:` and the explanation text:

```sql
-- pgt-ignore lint/safety/banDropTable: My startup never had any users.
drop table users;
```

### Suppressing Rules for Block of Code

You can suppress rules for blocks of code.

```sql
create table users (
-- ...
);

-- pgt-ignore-start typecheck: The `users` table will be created with this migration.
alter table users drop constraint users_pkey;

alter table users add primary key (user_id);
-- pgt-ignore-end typecheck
```

Every `pgt-ignore-start` needs a `pgt-ignore-end` suppression comment, and the suppressed rules must match exactly.

This _won't_ work, because the start tag suppresses a different diagnostic:

```sql
-- pgt-ignore-start lint/safety/banDropColumn
-- pgt-ignore-end lint/safety
```

Nesting is allowed, so this works fine:

```sql
-- pgt-ignore-start typecheck: outer
-- pgt-ignore-start lint/safety: inner
-- pgt-ignore-end lint/safety: inner
-- pgt-ignore-end typecheck: outer
```

### Suppressing Rules for Entire Files

Instead of repeating the same suppression on multiple lines, you can suppress for an entire file.

```sql
-- pgt-ignore-all lint/safety/banDropTable

drop table tasks;
drop table projects;
drop table users;
```

## Suppressing Multiple Rules

You can suppress multiple rules by adding multiple suppression comments above a statement:

```sql
-- pgt-ignore lint/safety/banDropColumn
-- pgt-ignore typecheck
alter table tasks drop column created_at;
```

## Notes

- Trying to suppress diagnostics that have already been disabled in your [configuration file](/#configuration) will show a warning.
- Trying to suppress diagnostics that don't haven't been raised will also show a warning.
25 changes: 13 additions & 12 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,23 @@ repo_name: supabase-community/postgres-language-server
repo_url: https://github.com/supabase-community/postgres-language-server

theme:
name: 'readthedocs'
features:
- navigation.expand
palette:
primary: grey
accent: red
name: "readthedocs"
features:
- navigation.expand
palette:
primary: grey
accent: red
nav:
- Introduction: index.md
- Guides:
- Linting Migrations: checking_migrations.md
- Troubleshooting: troubleshooting.md
- Linting Migrations: checking_migrations.md
- Troubleshooting: troubleshooting.md
- Reference:
- Rules: rules.md
- Rule Sources: rule_sources.md
- CLI: cli_reference.md
- Environment Variables: env_variables.md
- Rules: rules.md
- Rule Sources: rule_sources.md
- Rule Suppressions: rule_suppressions.md
- CLI: cli_reference.md
- Environment Variables: env_variables.md

plugins:
- gh-admonitions
Expand Down