Files
SQLFluff runs on files with the.sql extension.
Configuration
To enable or disable SQLFluff, use your.coderabbit.yaml file or the CodeRabbit web UI:
- .coderabbit.yaml
- Web UI
.coderabbit.yaml
config_file(default: unset): Optional path to a SQLFluff configuration file relative to the repository. Use this when the config file is not named one of SQLFluff’s default filenames.
config_file is not set, CodeRabbit looks for these SQLFluff config files:
setup.cfgtox.inipep8.ini.sqlfluffpyproject.toml
[sqlfluff] or [tool.sqlfluff] section. If no valid SQLFluff config file is found, CodeRabbit writes a temporary config based on the selected review profile and detected SQL dialect.
Profile behavior
When no valid SQLFluff config file is found, CodeRabbit generates a temporary config whose rule set depends on the active review profile:- Chill uses a narrow default rule set focused on SQL issues that can cause incorrect results or runtime failures, including bare
UNION, mismatched set-operation column counts, implicit cross joins, duplicate table aliases, andNULLcomparisons with=or!=. - Assertive uses a broader semantic and structural rule set, including checks for unused aliases or CTEs, duplicate aliases, identifier portability, unnecessary
CASEexpressions, misleadingDISTINCTsyntax, unreferenced joined tables, and T-SQL procedure issues. Layout, capitalization, style-preference, and high-noise reference rules remain excluded.
dbt templater support
CodeRabbit includessqlfluff-templater-dbt 4.2.2, dbt-core 1.10.22, and dbt-duckdb 1.10.1 with its SQLFluff installation. When your SQLFluff config sets templater = dbt, CodeRabbit can compile dbt-templated SQL for linting without requiring your repository to provide the Python templater package.
Before running the dbt templater, CodeRabbit runs a bounded dbt deps preflight when the project contains packages.yml or dependencies.yml. This installs dbt packages into the sandbox for the lint run only. Preflight failures are non-blocking: CodeRabbit still runs SQLFluff when possible, then cleans up dbt_packages/ and any package lock file that CodeRabbit created.
CodeRabbit resolves dbt projects in repository subdirectories by passing the project directory through DBT_PROJECT_DIR. For profile selection, CodeRabbit uses the first available value in this order: the profile value in your SQLFluff configuration, the DBT_PROFILE environment variable, then the profile field in dbt_project.yml. Templated profile values in dbt_project.yml are ignored.
If the configured dbt profiles directory does not already contain a DuckDB profile, CodeRabbit writes a temporary profiles.yml that uses an in-memory DuckDB target for the lint run, then restores the previous profile file after SQLFluff finishes. The generated profile uses the resolved profile name and the target value from your SQLFluff config when present; otherwise it defaults to dev.
Security policy and restrictions
SQLFluff runs in a secure sandbox using CodeRabbit’s installed SQLFluff, dbt templater, and DuckDB adapter packages. CodeRabbit does not install repository-provided Python packages, custom SQLFluff plugins, third-party dbt adapters, or custom templaters for this integration.Custom plugins, third-party dbt adapters, and custom templaters that require repository-provided Python packages are not supported.
When CodeRabbit skips SQLFluff
CodeRabbit skips SQLFluff when:- SQLFluff is disabled in CodeRabbit settings.
- The pull request does not include changed
.sqlfiles. - SQLFluff is already running in GitHub workflows.
Ignored codes
The following SQLFluff codes are automatically ignored:What’s next
All supported tools
Browse the complete list of linters, security analyzers, and CI/CD integrations available in CodeRabbit.
Tools reference
Explore detailed specifications and capabilities of all available CodeRabbit tools.
Configuration reference
Full reference for all available options, including how to enable, disable, and tune individual tools.