A modular SQL linter and auto-formatter with support for multiple dialects and templated code.
This report presents the forensic synthetic code analysis of sqlfluff/sqlfluff, a Python project with 9,805 GitHub stars. SynthScan v2.0 examined 228,607 lines of code across 635 source files, recording 1719 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 10.7 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1719 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | util.py | 21 | def _extract_whats_changed_section(release_body: str) -> str: | CODE |
| LOW | test/conftest.py | 46 | def config_overrides_for_fixture( | CODE |
| LOW | test/conftest.py | 187 | def _generate_test_segments_func(elems): | CODE |
| LOW | test/conftest.py | 269 | def raise_critical_errors_after_fix(monkeypatch): | CODE |
| LOW | test/conftest.py | 284 | def fail_on_parse_error_after_fix(monkeypatch): | CODE |
| LOW | test/conftest.py | 295 | def raise_error_apply_fixes_check_issue(message, *args): # pragma: no cover | CODE |
| LOW | test/conftest.py | 299 | def raise_error_conflicting_fixes_same_anchor(message: str): # pragma: no cover | CODE |
| LOW | test/generate_parse_fixture_yml.py | 79 | def _is_matching_new_criteria(example: ParseExample): | CODE |
| LOW | test/generate_parse_fixture_yml.py | 95 | def generate_one_parse_fixture( | CODE |
| LOW⚡ | test/testing_test.py | 13 | def test_assert_rule_fail_in_sql_handle_parse_error(): | CODE |
| LOW⚡ | test/testing_test.py | 20 | def test_assert_rule_fail_in_sql_should_fail_queries_that_unexpectedly_pass(): | CODE |
| LOW⚡ | test/testing_test.py | 27 | def test_assert_rule_pass_in_sql_should_handle_parse_error(): | CODE |
| LOW⚡ | test/testing_test.py | 34 | def test_assert_rule_pass_in_sql_should_fail_when_there_are_violations(): | CODE |
| LOW⚡ | test/testing_test.py | 41 | def test_rules_test_case_skipped_when_test_case_skipped(): | CODE |
| LOW⚡ | test/testing_test.py | 49 | def test_rules_test_case_has_variable_introspection(test_verbosity_level): | CODE |
| LOW | test/AGENTS.md | 288 | def test_implicit_alias_detected(self): | CODE |
| LOW | test/core/plugin_test.py | 20 | def test__plugin_manager_registers_example_plugin(): | CODE |
| LOW | test/core/plugin_test.py | 77 | def test__plugin_example_rules_returned(rule_ref): | CODE |
| LOW | test/core/plugin_test.py | 93 | def test__plugin_default_config_read(rule_ref, config_option): | CODE |
| LOW | test/core/plugin_test.py | 110 | def test__plugin_handle_bad_load(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 40 | def test__config__from_strings(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 53 | def test__config__nested_config_tests(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 100 | def test__config__templater_selection(templater_name, templater_class, raises_error): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 111 | def test__config__glob_exclude_config_tests(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 128 | def test__config__glob_include_config_tests(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 145 | def test__config__rules_set_to_none(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 161 | def test__config__rules_group_with_exclude(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 173 | def test__config__get_section(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 202 | def test__config__from_kwargs(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 217 | def test__config__from_string(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 229 | def test__config_missing_dialect(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 236 | def test__config__validate_configs_indirect(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 249 | def test__config__invalid_prefer_quoted_keyword_style(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 294 | def test__config__validate_configs_inline_layout(raw_sql): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 308 | def test__config__warn_unknown_rule(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 336 | def test__process_inline_config(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 371 | def test__process_inline_config__malformed_equals_syntax(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 391 | def test__process_raw_file_for_config(raw_sql): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 416 | def test__api__immutable_config(): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 428 | def test_resolve_path_glob_patterns(tmp_path): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 463 | def test_resolve_path_exact_files(tmp_path): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 481 | def test_resolve_path_no_matches(tmp_path): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 497 | def test_resolve_paths_in_config_comma_separated(tmp_path): | CODE |
| LOW | test/core/config/fluffconfig_test.py | 532 | def test_resolve_paths_in_config_no_matches_fallback(tmp_path): | CODE |
| LOW | test/core/config/ini_test.py | 6 | def test__config__ini_dotted_keys_nested_structure(): | CODE |
| LOW | test/core/config/ini_test.py | 42 | def test__config__ini_dotted_keys_type_coercion(): | STRING |
| LOW | test/core/config/ini_test.py | 72 | def test__config__ini_simple_keys_without_dots(): | STRING |
| LOW | test/core/config/ini_test.py | 96 | def test__config__ini_dotted_keys_all_sections(): | STRING |
| LOW | test/core/config/validate_test.py | 22 | def test__validate_configs_direct(): | CODE |
| LOW | test/core/config/validate_test.py | 48 | def test__validate_configs_precedence_same_file(): | CODE |
| LOW | test/core/config/validate_test.py | 127 | def test__validate_indentation_invalid(config_dict, config_warning): | CODE |
| LOW | test/core/config/validate_test.py | 145 | def test__validate_indentation_valid(config_dict): | CODE |
| LOW | test/core/config/validate_test.py | 160 | def test__validate_max_parse_depth_valid(config_dict, expected): | CODE |
| LOW | test/core/config/validate_test.py | 183 | def test__validate_max_parse_depth_invalid(config_dict, config_warning): | CODE |
| LOW | test/core/config/validate_test.py | 199 | def test__validate_max_parse_nodes_valid(config_dict, expected): | CODE |
| LOW | test/core/config/validate_test.py | 222 | def test__validate_max_parse_nodes_invalid(config_dict, config_warning): | CODE |
| LOW | test/core/config/loader_test.py | 44 | def test__config__load_file_dir(): | CODE |
| LOW | test/core/config/loader_test.py | 52 | def test__config__load_from_string(): | CODE |
| LOW⚡ | test/core/config/loader_test.py | 63 | def test__config__load_file_f(): | CODE |
| LOW⚡ | test/core/config/loader_test.py | 71 | def test__config__load_file_missing_extra(): | CODE |
| 719 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/dialects/conftest.py | 0 | test that specific segments parse as expected. nb: we're testing the parse function not the match function although this | STRING |
| HIGH | test/dialects/postgres_test.py | 0 | test that specific segments parse as expected. nb: we're testing the parse function not the match function although this | STRING |
| HIGH | test/dialects/ansi_test.py | 0 | test that specific segments parse as expected. nb: we're testing the parse function not the match function although this | STRING |
| HIGH | src/sqlfluff/core/parser/segments/file.py | 0 | a segment representing a whole file or script. this is also the default "root" segment of the dialect, and so is usually | STRING |
| HIGH | src/sqlfluff/dialects/dialect_ansi.py | 0 | a segment representing a whole file or script. this is also the default "root" segment of the dialect, and so is usually | STRING |
| HIGH | src/sqlfluff/dialects/dialect_bigquery.py | 0 | a segment representing a whole file or script. this is also the default "root" segment of the dialect, and so is usually | STRING |
| HIGH | src/sqlfluff/core/templaters/placeholder.py | 0 | process a string and return one or more variant renderings. note that the arguments are enforced as keywords because tem | STRING |
| HIGH | src/sqlfluff/core/templaters/python.py | 0 | process a string and return one or more variant renderings. note that the arguments are enforced as keywords because tem | STRING |
| HIGH | src/sqlfluff/core/templaters/jinja.py | 0 | process a string and return one or more variant renderings. note that the arguments are enforced as keywords because tem | STRING |
| HIGH | src/sqlfluff/utils/functional/segment_predicates.py | 0 | defines commonly used raw file slice predicates for rule writers. for consistency, all the predicates in this module are | STRING |
| HIGH | …ff/utils/functional/templated_file_slice_predicates.py | 0 | defines commonly used raw file slice predicates for rule writers. for consistency, all the predicates in this module are | STRING |
| HIGH | …sqlfluff/utils/functional/raw_file_slice_predicates.py | 0 | defines commonly used raw file slice predicates for rule writers. for consistency, all the predicates in this module are | STRING |
| HIGH | src/sqlfluff/utils/functional/segment_predicates.py | 0 | returns a function that determines if segment is one the types. | STRING |
| HIGH | …sqlfluff/utils/functional/raw_file_slice_predicates.py | 0 | returns a function that determines if segment is one the types. | STRING |
| HIGH | …ff/utils/functional/templated_file_slice_predicates.py | 0 | returns a function that determines if segment is one the types. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_teradata.py | 0 | a column definition, e.g. for create table or alter table. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_oracle.py | 0 | a column definition, e.g. for create table or alter table. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_mysql.py | 0 | a column definition, e.g. for create table or alter table. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_ansi.py | 0 | a column definition, e.g. for create table or alter table. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_trino.py | 0 | a column definition, e.g. for create table or alter table. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_teradata.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_impala.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_postgres.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_exasol.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_vertica.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_ansi.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_snowflake.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_trino.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_flink.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_materialize.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_greenplum.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_redshift.py | 0 | a generic segment, to any of its child subsegments. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_doris.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_tsql.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_mariadb.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_exasol.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_mysql.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_ansi.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_starrocks.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_postgres.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_vertica.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_snowflake.py | 0 | a column option; each create table column can have 0 or more. https://docs.snowflake.com/en/sql-reference/sql/create-tab | STRING |
| HIGH | src/sqlfluff/dialects/dialect_tsql.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_hive.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_athena.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_databricks.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_sparksql.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_mysql.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_bigquery.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_clickhouse.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_sqlite.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_starrocks.py | 0 | overriding statementsegment to allow for additional segment parsing. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_tsql.py | 0 | things that come after select but before the columns. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_postgres.py | 0 | things that come after select but before the columns. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_mysql.py | 0 | things that come after select but before the columns. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_ansi.py | 0 | things that come after select but before the columns. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_bigquery.py | 0 | things that come after select but before the columns. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_redshift.py | 0 | things that come after select but before the columns. | STRING |
| HIGH | src/sqlfluff/dialects/dialect_tsql.py | 0 | a series of bracketed arguments. e.g. the bracketed part of numeric(1, 3) | STRING |
| HIGH | src/sqlfluff/dialects/dialect_exasol.py | 0 | a series of bracketed arguments. e.g. the bracketed part of numeric(1, 3) | STRING |
| 69 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/rules/std_LT01_jinja_alignment_test.py | 7 | CODE | |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 40 | CODE | |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 42 | CODE | |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 43 | CODE | |
| LOW | plugins/sqlfluff-templater-dbt/test/templater_test.py | 27 | CODE | |
| LOW | docsv/scripts/assemble-site.py | 4 | CODE | |
| LOW | utils/rust_to_python_grammar.py | 17 | CODE | |
| LOW | src/sqlfluff/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/core/formatter.py | 19 | CODE | |
| LOW | src/sqlfluff/core/formatter.py | 20 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 6 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 9 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 9 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 22 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 23 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 23 | CODE | |
| LOW | src/sqlfluff/core/__init__.py | 26 | CODE | |
| LOW | src/sqlfluff/core/errors.py | 17 | CODE | |
| LOW | src/sqlfluff/core/errors.py | 17 | CODE | |
| LOW | src/sqlfluff/core/errors.py | 18 | CODE | |
| LOW | src/sqlfluff/core/errors.py | 18 | CODE | |
| LOW | src/sqlfluff/core/errors.py | 21 | CODE | |
| LOW | src/sqlfluff/core/errors.py | 21 | CODE | |
| LOW | src/sqlfluff/core/config/__init__.py | 12 | CODE | |
| LOW | src/sqlfluff/core/config/__init__.py | 13 | CODE | |
| LOW | src/sqlfluff/core/config/__init__.py | 13 | CODE | |
| LOW | src/sqlfluff/core/config/__init__.py | 13 | CODE | |
| LOW | src/sqlfluff/core/config/__init__.py | 13 | CODE | |
| LOW | src/sqlfluff/core/config/__init__.py | 13 | CODE | |
| LOW | src/sqlfluff/core/config/fluffconfig.py | 3 | CODE | |
| LOW | src/sqlfluff/core/config/loader.py | 9 | CODE | |
| LOW | src/sqlfluff/core/linter/__init__.py | 3 | CODE | |
| LOW | src/sqlfluff/core/linter/__init__.py | 4 | CODE | |
| LOW | src/sqlfluff/core/linter/__init__.py | 4 | CODE | |
| LOW | src/sqlfluff/core/linter/__init__.py | 4 | CODE | |
| LOW | src/sqlfluff/core/linter/__init__.py | 5 | CODE | |
| LOW | src/sqlfluff/core/linter/__init__.py | 6 | CODE | |
| LOW | src/sqlfluff/core/linter/__init__.py | 7 | CODE | |
| LOW | src/sqlfluff/core/linter/fix.py | 12 | CODE | |
| LOW | src/sqlfluff/core/linter/linting_result.py | 14 | CODE | |
| LOW | src/sqlfluff/core/linter/linter.py | 41 | CODE | |
| LOW | src/sqlfluff/core/linter/linter.py | 47 | CODE | |
| LOW | src/sqlfluff/core/linter/linter.py | 48 | CODE | |
| LOW | src/sqlfluff/core/linter/linter.py | 49 | CODE | |
| LOW | src/sqlfluff/core/plugin/hookspecs.py | 13 | CODE | |
| LOW | src/sqlfluff/core/parser/match_result.py | 15 | CODE | |
| LOW | src/sqlfluff/core/parser/match_result.py | 16 | CODE | |
| LOW | src/sqlfluff/core/parser/match_result.py | 16 | CODE | |
| LOW | src/sqlfluff/core/parser/__init__.py | 3 | CODE | |
| LOW | src/sqlfluff/core/parser/__init__.py | 3 | CODE | |
| 150 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | util.py | 112 | CODE | |
| LOW | test/conftest.py | 61 | CODE | |
| LOW | test/conftest.py | 112 | CODE | |
| LOW | test/conftest.py | 187 | CODE | |
| LOW | test/generate_parse_fixture_yml.py | 26 | CODE | |
| LOW | test/cli/commands_test.py | 1671 | CODE | |
| LOW | test/cli/commands_test.py | 1853 | CODE | |
| LOW | test/cli/test_parse_with_positions.py | 222 | CODE | |
| LOW | test/cli/test_parse_with_positions.py | 256 | CODE | |
| LOW | test/rules/std_fix_auto_test.py | 47 | CODE | |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 634 | CODE | |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 654 | CODE | |
| LOW | docsv/scripts/generate-cli-docs.py | 89 | CODE | |
| LOW | docsv/scripts/generate-api-docs.py | 104 | CODE | |
| LOW | docsv/scripts/generate-api-docs.py | 181 | CODE | |
| LOW | docsv/scripts/generate-api-docs.py | 293 | CODE | |
| LOW | docsv/scripts/generate-api-docs.py | 379 | CODE | |
| LOW | docsv/scripts/generate-api-docs.py | 660 | CODE | |
| LOW | docsv/scripts/generate-rules-docs.py | 209 | CODE | |
| LOW | docsv/scripts/generate-rules-docs.py | 536 | CODE | |
| LOW | utils/build_parsers.py | 257 | CODE | |
| LOW | utils/build_parsers.py | 367 | CODE | |
| LOW | utils/build_parsers.py | 1333 | CODE | |
| LOW | utils/compare_parser_metrics.py | 104 | CODE | |
| LOW | utils/compare_parser_metrics.py | 336 | CODE | |
| LOW | utils/benchmark_parsing.py | 69 | CODE | |
| LOW | examples/01_basic_api_usage.py | 48 | CODE | |
| LOW | src/sqlfluff/diff_quality_plugin.py | 54 | CODE | |
| LOW | src/sqlfluff/core/config/validate.py | 22 | CODE | |
| LOW | src/sqlfluff/core/config/loader.py | 51 | CODE | |
| LOW | src/sqlfluff/core/config/ini.py | 12 | CODE | |
| LOW | src/sqlfluff/core/config/toml.py | 31 | CODE | |
| LOW | src/sqlfluff/core/linter/patch.py | 58 | CODE | |
| LOW | src/sqlfluff/core/linter/patch.py | 271 | CODE | |
| LOW | src/sqlfluff/core/linter/runner.py | 174 | CODE | |
| LOW | src/sqlfluff/core/linter/discovery.py | 177 | CODE | |
| LOW | src/sqlfluff/core/linter/fix.py | 107 | CODE | |
| LOW | src/sqlfluff/core/linter/linted_dir.py | 228 | CODE | |
| LOW | src/sqlfluff/core/linter/linting_result.py | 135 | CODE | |
| LOW | src/sqlfluff/core/linter/linter.py | 170 | CODE | |
| LOW | src/sqlfluff/core/linter/linter.py | 457 | CODE | |
| LOW | src/sqlfluff/core/linter/linter.py | 1141 | CODE | |
| LOW | src/sqlfluff/core/parser/match_result.py | 197 | CODE | |
| LOW | src/sqlfluff/core/parser/rust_parser.py | 179 | CODE | |
| LOW | src/sqlfluff/core/parser/context.py | 165 | CODE | |
| LOW | src/sqlfluff/core/parser/lexer.py | 483 | CODE | |
| LOW | src/sqlfluff/core/parser/lexer.py | 182 | CODE | |
| LOW | src/sqlfluff/core/parser/match_algorithms.py | 140 | CODE | |
| LOW | src/sqlfluff/core/parser/match_algorithms.py | 366 | CODE | |
| LOW | src/sqlfluff/core/parser/match_algorithms.py | 553 | CODE | |
| LOW | src/sqlfluff/core/parser/grammar/sequence.py | 36 | CODE | |
| LOW | src/sqlfluff/core/parser/segments/file.py | 44 | CODE | |
| LOW | src/sqlfluff/core/parser/segments/base.py | 463 | CODE | |
| LOW | src/sqlfluff/core/dialects/common.py | 133 | CODE | |
| LOW | src/sqlfluff/core/dialects/base.py | 185 | CODE | |
| LOW | src/sqlfluff/core/rules/fix.py | 107 | CODE | |
| LOW | src/sqlfluff/core/rules/fix.py | 275 | CODE | |
| LOW | src/sqlfluff/core/rules/noqa.py | 65 | CODE | |
| LOW | src/sqlfluff/core/rules/noqa.py | 168 | CODE | |
| LOW | src/sqlfluff/core/rules/noqa.py | 190 | CODE | |
| 101 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 301 | [tool.uv.workspace] | COMMENT |
| LOW | tox.ini | 41 | # consistent results. | COMMENT |
| LOW | test/core/linter/linted_file_test.py | 121 | # which should trigger the logic to ensure that the source | COMMENT |
| LOW | test/utils/reflow/reindent_test.py | 401 | # JOIN | COMMENT |
| LOW | test/utils/reflow/reindent_test.py | 501 | _IndentPoint(7, 1, 0, 1, 5, False, ()), | COMMENT |
| LOW | test/utils/reflow/reindent_test.py | 541 | ( | COMMENT |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 141 | # This one seems to be less of an issue in testing, but I'm | COMMENT |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 741 | # The explanation on the undefined macro error is already fairly | COMMENT |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 801 | # 1. Assertion errors in TemplatedFile, when it sanity checks the | COMMENT |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 821 | # So for files that have no templated elements in them, render_func | COMMENT |
| LOW | docs/source/_partials/starter_config.cfg | 1 | [sqlfluff] | COMMENT |
| LOW | docs/source/_partials/starter_config.cfg | 61 | COMMENT | |
| LOW | examples/01_basic_api_usage.py | 21 | # ... | COMMENT |
| LOW | examples/03_getting_rules_and_dialects.py | 21 | # ... | COMMENT |
| LOW | .github/FUNDING.yml | 1 | # sqlfluff is free to use to improve sql in whatever context you | COMMENT |
| LOW | .github/workflows/ci-tests.yml | 1 | ############################# | COMMENT |
| LOW | .github/workflows/ci-tests.yml | 481 | name: Dialect ${{ matrix.marks }}${{ matrix.with-rust }} | COMMENT |
| LOW | sqlfluffrs/pyproject.toml | 1 | [build-system] | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_api.rs | 1 | //! Ergonomic API for Table-Driven Grammar Access | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_inst.rs | 1 | //! Table-Driven Grammar Instruction Format | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_inst.rs | 61 | // pub enum ParseMode { | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_inst.rs | 181 | /// | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_inst.rs | 201 | /// | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_inst.rs | 221 | /// - Use `exclude_idx` if HAS_EXCLUDE flag set | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_inst.rs | 241 | pub parse_mode: ParseMode, | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/identity.rs | 1 | //! Process-global unique identifiers for tokens. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/parser.rs | 101 | COMMENT | |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_tables.rs | 1 | //! Table-Driven Grammar Storage | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_tables.rs | 21 | //! Sequence( | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_tables.rs | 41 | COMMENT | |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_tables.rs | 61 | /// Instructions index into this table via `first_terminator_idx` + `terminator_count`. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_tables.rs | 81 | /// - simple_hint indices (optional) | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_tables.rs | 101 | /// Contains pre-computed simple hints for fast pruning of OneOf alternatives. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/grammar_tables.rs | 121 | COMMENT | |
| LOW | sqlfluffrs/sqlfluffrs_types/src/token/mod.rs | 721 | // let mut child_results = Vec::new(); | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_types/src/token/mod.rs | 741 | // let mut merged_map = HashMap::new(); | COMMENT |
| LOW | sqlfluffrs/tests/test_delimited_terminator_timing.rs | 1 | /// Test cases to verify terminator timing behavior in Delimited grammar | COMMENT |
| LOW | sqlfluffrs/tests/test_delimited_terminator_timing.rs | 21 | fn test_delimited_where_terminator_matches_element() { | COMMENT |
| LOW | sqlfluffrs/tests/test_delimited_terminator_timing.rs | 41 | COMMENT | |
| LOW | sqlfluffrs/tests/test_delimited_terminator_timing.rs | 61 | /// 5. Match "b" ✓ | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_benchmarks/build.rs | 1 | //! Build script for the TPC benchmark crate. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_benchmarks/examples/time_tpc.rs | 1 | /// time_tpc: timing and parser-stats harness for TPC-H and TPC-DS benchmarks. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_benchmarks/benches/tpc_bench.rs | 1 | /// TPC-H and TPC-DS lex and parse benchmarks. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_benchmarks/src/lib.rs | 1 | //! Shared helpers for the TPC-H / TPC-DS lex and parse benchmarks. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_python/src/marker.rs | 101 | self.0.source_str() | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_rules/src/lib.rs | 1 | //! Rust-native lint rules, run over the parse arena's public read API. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_rules/src/cp01.rs | 1 | //! CP01 (keyword capitalisation) detection over the parse arena. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_rules/src/python.rs | 1 | //! PyO3 bindings for the Rust-native rules. | COMMENT |
| LOW | sqlfluffrs/benches/baseline_phase1.rs | 1 | /// Phase 1 Baseline Benchmarks for Table-Driven Grammar Migration | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_dialects/build.rs | 1 | //! Cargo build script for `sqlfluffrs_dialects`. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_dialects/build.rs | 21 | //! | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_dialects/src/block_comment.rs | 1 | /// Extract nested block comments from SQL input. | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/core.rs | 41 | tables.aux_data[start..end] | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/core.rs | 81 | COMMENT | |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/core.rs | 161 | /// Memoizes a Ref's resolved child grammar (ref grammar_id -> child grammar_id). | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/core.rs | 681 | class_types | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/cache.rs | 1 | /// Parse caching module for performance optimization | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/cache.rs | 21 | #[cfg(feature = "verbose-debug")] | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/cache.rs | 41 | /// Cache key for table-driven parser memoization | COMMENT |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/arena_py.rs | 1 | //! PyO3 bindings for the arena tree. | COMMENT |
| 93 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/core/parser/lexer_test.py | 474 | # Create a mock templated file | COMMENT |
| MEDIUM | test/core/parser/lexer_test.py | 537 | # Create a mock token with an unknown type | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 309 | # Create a parser | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 342 | # Create a parser | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 376 | # Create a parser | COMMENT |
| MEDIUM | test/core/parser/segments/segments_meta_test.py | 64 | # Create a TemplateSegment with position marker | COMMENT |
| MEDIUM | test/core/templaters/jinja_test.py | 1730 | # Create a TemplatedFile from the results. This runs some useful sanity | COMMENT |
| MEDIUM | test/core/templaters/jinja_test.py | 2027 | # Create a config with dotted notation in the context section | COMMENT |
| MEDIUM | test/utils/analysis/query_test.py | 19 | # Create a crawler from the root segment. | COMMENT |
| MEDIUM | test/utils/reflow/reindent_test.py | 867 | # Create a custom reflow config with the specific settings | COMMENT |
| MEDIUM | test/utils/reflow/reindent_test.py | 880 | # Create a reflow sequence with the custom config | COMMENT |
| MEDIUM | test/utils/reflow/reindent_test.py | 923 | # Create a custom reflow config with: | COMMENT |
| MEDIUM | test/utils/reflow/reindent_test.py | 939 | # Create a reflow sequence with the custom config | COMMENT |
| MEDIUM | test/utils/reflow/reindent_test.py | 974 | # Create a custom reflow config with: | COMMENT |
| MEDIUM | test/utils/reflow/reindent_test.py | 990 | # Create a reflow sequence with the custom config | COMMENT |
| MEDIUM | test/cli/commands_test.py | 2673 | # Create a SQL file larger than the byte limit. | COMMENT |
| MEDIUM | test/cli/commands_test.py | 2702 | # Create a SQL file larger than the byte limit. | COMMENT |
| MEDIUM⚡ | test/cli/test_parse_with_positions.py | 139 | # Create a templated file for position tracking | COMMENT |
| MEDIUM⚡ | test/cli/test_parse_with_positions.py | 143 | # Create an Indent meta segment with position marker at line 2 | COMMENT |
| MEDIUM | plugins/sqlfluff-templater-dbt/test/templater_test.py | 420 | # Create a real file structure with a symlink mimicking dbt local packages: | COMMENT |
| MEDIUM | utils/build_parsers.py | 775 | # Create a synthetic OneOf for the elements | COMMENT |
| MEDIUM | src/sqlfluff/core/parser/types.py | 20 | # Define the potential parse modes. These are used in grammars | COMMENT |
| MEDIUM | src/sqlfluff/core/parser/rust_parser.py | 167 | # Create the Rust parser | COMMENT |
| MEDIUM | src/sqlfluff/core/parser/grammar/sequence.py | 567 | # Create the final match result | COMMENT |
| MEDIUM | src/sqlfluff/core/parser/grammar/anyof.py | 45 | # Create an unmatched segment | COMMENT |
| MEDIUM | src/sqlfluff/core/parser/segments/base.py | 142 | # Create a cache key on definition. | COMMENT |
| MEDIUM | src/sqlfluff/core/rules/loader.py | 20 | # Create a rules dictionary for importing in | COMMENT |
| MEDIUM | src/sqlfluff/core/rules/base.py | 706 | """This method is monkey patched into a "raise" for certain tests.""" | STRING |
| MEDIUM | src/sqlfluff/core/templaters/jinja.py | 967 | # Create a mapping of the original source slices before modification so | COMMENT |
| MEDIUM | src/sqlfluff/core/helpers/dict.py | 279 | # Create an empty dictionary if key not found. | COMMENT |
| MEDIUM | src/sqlfluff/utils/testing/logging.py | 58 | # Create a placeholder class that will never be instantiated | COMMENT |
| MEDIUM | src/sqlfluff/dialects/dialect_ansi.py | 324 | # The following functions can be called without parentheses per ANSI specification | COMMENT |
| MEDIUM | src/sqlfluff/rules/layout/LT08.py | 220 | # Create a result, anchored on the start of the next content. | COMMENT |
| MEDIUM | src/sqlfluff/rules/convention/CV06.py | 419 | # Create the final semi-colon if it does not yet exist. | COMMENT |
| MEDIUM⚡ | src/sqlfluff/rules/structure/ST06.py | 260 | # Create a list of all the edit fixes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | requirements_dev.txt | 4 | # --------------------------- | COMMENT |
| MEDIUM⚡ | requirements_dev.txt | 10 | # -------------------- | COMMENT |
| MEDIUM⚡ | requirements_dev.txt | 15 | # -------------- | COMMENT |
| MEDIUM⚡ | test/core/parser/rust_parser_test.py | 16 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/core/parser/rust_parser_test.py | 18 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/core/parser/rust_parser_test.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/core/parser/rust_parser_test.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/core/parser/rust_parser_test.py | 69 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/core/parser/rust_parser_test.py | 71 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | test/core/parser/rust_parser_test.py | 446 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/core/parser/rust_parser_test.py | 448 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 528 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 530 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 666 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 675 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 937 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 948 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 1062 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/core/parser/rust_parser_test.py | 1071 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/sqlfluff/core/dialects/common.py | 78 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | src/sqlfluff/core/dialects/common.py | 87 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | src/sqlfluff/core/dialects/common.py | 348 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | src/sqlfluff/core/dialects/common.py | 350 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | src/sqlfluff/utils/reflow/respace.py | 27 | # --------------------------- | COMMENT |
| MEDIUM⚡ | src/sqlfluff/utils/reflow/respace.py | 29 | # --------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/core/templaters/python_test.py | 461 | # For the render_func we just use a function which just returns the | COMMENT |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 742 | # explanatory, so just pass it straight through. | COMMENT |
| MEDIUM | plugins/sqlfluff-templater-dbt/test/templater_test.py | 508 | # Log the rendered file to facilitate better debugging of the files. | COMMENT |
| LOW | docsv/scripts/generate-dialects-docs.py | 60 | # If no definition found, just return as plain text | COMMENT |
| LOW | .github/workflows/create-release-pull-request.yaml | 81 | # merged, so we just add "YYYY-MM-DD" for now as a placeholder. | COMMENT |
| LOW | src/sqlfluff/core/linter/discovery.py | 96 | # to process and just return None. | COMMENT |
| LOW | src/sqlfluff/core/linter/discovery.py | 152 | # Does it have a relevant extension? If not, just return an empty list. | COMMENT |
| LOW | src/sqlfluff/core/linter/discovery.py | 163 | # If not ignored, just return the file. | COMMENT |
| MEDIUM | src/sqlfluff/core/linter/fix.py | 83 | # Definitely valid (i.e. no conflict) if 0 or 1. In practice, this | COMMENT |
| MEDIUM | src/sqlfluff/core/linter/fix.py | 92 | # Definitely bad if > 2. | COMMENT |
| LOW | src/sqlfluff/core/linter/fix.py | 163 | # No fix matches here, just add the segment and move on. | COMMENT |
| LOW | src/sqlfluff/core/linter/fix.py | 328 | # Don't any apply fixes from within this region and just return the | COMMENT |
| LOW | src/sqlfluff/core/parser/match_result.py | 129 | # If the current match is empty, just return the other. | COMMENT |
| LOW | src/sqlfluff/core/parser/match_result.py | 132 | # If the same is true of the other, just return self. | COMMENT |
| LOW | src/sqlfluff/core/parser/match_result.py | 169 | # If it's a failed (empty) match, then just pass straight | COMMENT |
| MEDIUM | src/sqlfluff/core/parser/parser.py | 49 | # a unique entry point to facilitate exactly this. All other segments | COMMENT |
| LOW | src/sqlfluff/core/parser/match_algorithms.py | 98 | # then we should just return immediately. Nothing will match. | COMMENT |
| LOW | src/sqlfluff/core/parser/match_algorithms.py | 522 | # If there's either no match, or we hit a target, just pass the result. | COMMENT |
| LOW | src/sqlfluff/core/parser/grammar/sequence.py | 180 | # If it's a raw meta, just add it to our list. | COMMENT |
| LOW | src/sqlfluff/core/parser/grammar/sequence.py | 332 | # If it did, then just add it as a child match and we're done. Move on. | COMMENT |
| LOW | src/sqlfluff/core/parser/grammar/anyof.py | 34 | # If we're being strict, just return. | COMMENT |
| MEDIUM | src/sqlfluff/core/templaters/jinja.py | 842 | # The JinjaTracer slicing algorithm is more robust, but it requires | COMMENT |
| LOW | src/sqlfluff/core/templaters/python.py | 808 | # if we don't have anything to anchor on, then just return (coalescing | COMMENT |
| MEDIUM | src/sqlfluff/core/templaters/slicers/tracer.py | 548 | # by keeping tokens as Jinja returns them, the code is more robust. | COMMENT |
| LOW | src/sqlfluff/core/helpers/dict.py | 292 | # If we don't, then just set the value: | COMMENT |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 1420 | # If indent compensation is not needed, simply return the desired indent. | COMMENT |
| MEDIUM | src/sqlfluff/utils/reflow/sequence.py | 143 | # This is to facilitate better evaluation of the ends of files. | COMMENT |
| LOW | src/sqlfluff/dialects/dialect_ansi.py | 2993 | # than just add optional=True to BracketedColumnReferenceListGrammar). | COMMENT |
| LOW | src/sqlfluff/dialects/dialect_snowflake.py | 8464 | # we will just use that. | COMMENT |
| MEDIUM | src/sqlfluff/dialects/dialect_redshift.py | 1738 | # TODO: This logic can be streamlined. However, there are some odd parsing issues. | COMMENT |
| LOW | src/sqlfluff/rules/references/RF03.py | 327 | # If it's the right kind already, just return. | COMMENT |
| LOW | src/sqlfluff/rules/convention/CV10.py | 169 | # We can't just set the primary type, but we have to ensure that the | STRING |
| LOW | src/sqlfluff/rules/ambiguous/AM07.py | 80 | # set expression, just use the first query. If that first query isn't | COMMENT |
| LOW | src/sqlfluff/rules/ambiguous/AM06.py | 135 | # If there are no column references then just return | COMMENT |
| MEDIUM | src/sqlfluff/rules/aliasing/AL09.py | 185 | # should be done in conjunction with RF06 & CP02 (see docstring). | COMMENT |
| MEDIUM⚡ | src/sqlfluff/rules/structure/ST06.py | 269 | # approach would leverage difflib.SequenceMatcher.get_opcodes(), | COMMENT |
| MEDIUM⚡ | src/sqlfluff/rules/structure/ST06.py | 273 | # final application of patches (in "sqlfluff fix") more robust. | COMMENT |
| LOW | src/sqlfluff/rules/structure/ST11.py | 105 | # If we can't find a reference, just return an empty string | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CHANGELOG.md | 5787 | One of the biggest new features in this release is the support for SQLAlchemy and other "placeholder" templating within | CODE |
| LOW | test/core/config/fluffconfig_test.py | 95 | ("placeholder", PlaceholderTemplater, False), | CODE |
| LOW⚡ | test/core/config/loader_test.py | 240 | os.path.join("test", "fixtures", "config", "placeholder"), | CODE |
| LOW⚡ | test/core/config/loader_test.py | 250 | "placeholder": { | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 228 | "placeholder", | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 231 | ("", "\n select 1 as test\n", "literal", "placeholder"), | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 233 | ("", "{% endcall %}", "block_end", "placeholder"), | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 239 | "placeholder", | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 261 | ("", "{% macro render_name(title) %}", "block_start", "placeholder"), | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 263 | ("", "\n '", "literal", "placeholder"), | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 264 | ("", "{{ title }}", "templated", "placeholder"), | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 265 | ("", ". foo' as ", "literal", "placeholder"), | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 266 | ("", "{{ caller() }}", "templated", "placeholder"), | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 267 | ("", "\n", "literal", "placeholder"), | CODE |
| LOW⚡ | test/core/parser/lexer_test.py | 269 | ("", "{% endmacro %}", "block_end", "placeholder"), | CODE |
| LOW | test/core/parser/lexer_test.py | 286 | ("", "\n bar\n ", "literal", "placeholder"), | CODE |
| LOW | test/core/parser/lexer_test.py | 288 | ("", "{% endcall %}", "block_end", "placeholder"), | CODE |
| LOW | test/core/parser/lexer_test.py | 373 | ("", "{# comment #}", "comment", "placeholder"), | CODE |
| LOW | test/core/parser/lexer_test.py | 401 | ("", "", "special_type", "placeholder"), | CODE |
| LOW | test/core/parser/lexer_test.py | 598 | "templater": "placeholder", | CODE |
| LOW | test/core/parser/lexer_test.py | 603 | "placeholder": { | CODE |
| LOW | test/core/parser/lexer_test.py | 686 | "templater": "placeholder", | CODE |
| LOW | test/core/parser/lexer_test.py | 691 | "placeholder": { | CODE |
| LOW | test/core/parser/segments/segments_meta_test.py | 78 | assert tuple_with_pos[0] == "placeholder" | CODE |
| LOW | test/core/templaters/jinja_test.py | 746 | assert seg_types == ["placeholder", "end_of_file"] | CODE |
| LOW | test/core/templaters/jinja_test.py | 852 | seg.is_type("placeholder") | CODE |
| LOW | sqlfluffrs/sqlfluffrs_types/src/token/construction.rs | 265 | token.token_type = Cow::Borrowed("placeholder"); | CODE |
| LOW | sqlfluffrs/sqlfluffrs_types/src/token/construction.rs | 331 | class_types_static!(PLACEHOLDER_CT, "base", "raw", "meta", "placeholder"); | CODE |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/types.rs | 228 | MetaType::Template { .. } => "placeholder", | CODE |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/types.rs | 447 | MetaType::Template { .. } => "placeholder".to_string(), | CODE |
| LOW | sqlfluffrs/sqlfluffrs_parser/src/parser/arena.rs | 697 | MetaType::Template { .. } => "placeholder", | CODE |
| LOW | …/sqlfluffrs_parser/src/parser/table_driven/sequence.rs | 872 | if tok.is_type(&["placeholder"]) { | CODE |
| LOW | …/sqlfluffrs_parser/src/parser/table_driven/sequence.rs | 897 | if tok.is_type(&["placeholder"]) { | CODE |
| LOW | src/sqlfluff/core/linter/patch.py | 155 | seg.is_type("placeholder") | CODE |
| LOW | src/sqlfluff/core/parser/grammar/sequence.py | 60 | if segments[_idx - 1].is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/core/parser/grammar/sequence.py | 71 | if segments[_idx].is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/core/parser/segments/base.py | 519 | fwd_seg.is_type("placeholder") | CODE |
| LOW | src/sqlfluff/core/parser/segments/meta.py | 189 | type = "placeholder" | CODE |
| LOW | src/sqlfluff/core/templaters/placeholder.py | 78 | name = "placeholder" | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 43 | if not point.class_types.intersection({"newline", "placeholder"}): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 54 | if seg.is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 280 | assert segment.is_type("placeholder", "template_loop") | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 347 | elif not _element.segments[0].is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 380 | if first_segment.is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 412 | if seg.is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 489 | if "placeholder" in elements[ip.idx + 1].class_types: | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 701 | if not seg.is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 750 | if not seg.is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 1028 | "placeholder" in elements[idx + 1].class_types | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 1256 | if elements[0].segments[0].is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 1278 | if indent_seg.is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 1372 | if init_seg.is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 1624 | if elements[ip.idx + 1 :] and "placeholder" in elements[ip.idx + 1].class_types: | CODE |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 1629 | if seg.is_type("placeholder") | CODE |
| LOW | src/sqlfluff/utils/reflow/elements.py | 51 | if not segment or not segment.is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/elements.py | 115 | "whitespace", "placeholder", "newline", "indent", "template_loop" | CODE |
| LOW | src/sqlfluff/utils/reflow/elements.py | 444 | if indent_seg and indent_seg.is_type("placeholder"): | CODE |
| LOW | src/sqlfluff/utils/reflow/elements.py | 622 | if before.is_type("placeholder") | CODE |
| LOW | src/sqlfluff/utils/reflow/elements.py | 635 | if after.is_type("placeholder") | CODE |
| LOW | src/sqlfluff/rules/layout/LT12.py | 139 | if _trailing_segment.is_type("placeholder"): | CODE |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/core/errors_test.py | 42 | # Set ignore to true if configured. | COMMENT |
| LOW | test/core/errors_test.py | 57 | # Set ignore to true if configured. | COMMENT |
| LOW | test/core/errors_test.py | 72 | # Set ignore to true if configured. | COMMENT |
| LOW⚡ | test/dialects/conftest.py | 113 | # Check if all child segments are the correct type | COMMENT |
| LOW | docsv/scripts/generate-api-docs.py | 138 | # Check if this line is a section header | COMMENT |
| LOW | utils/build_parsers.py | 1206 | # Check if this is an implicit indent | COMMENT |
| LOW | utils/build_parsers.py | 1246 | # Check if this is an implicit indent | COMMENT |
| LOW | utils/build_parsers.py | 1719 | # Check if this is a Segment class (has a 'type' attribute) | COMMENT |
| LOW | utils/micro_benchmark_small.py | 83 | # Check if lexing dominates | COMMENT |
| LOW | docs/generate-auto-docs.py | 67 | # Check if "core" is in the rule's groups | STRING |
| LOW | docs/source/conf.py | 96 | # Set branch to main (used by Codecov button) | COMMENT |
| LOW | examples/02_timing_api_steps.py | 16 | # Output the result | COMMENT |
| LOW | src/sqlfluff/diff_quality_plugin.py | 56 | # Check if SQLFluff is installed. | COMMENT |
| LOW | src/sqlfluff/core/default_config.cfg | 62 | # Set either to 0 to disable. | COMMENT |
| LOW | src/sqlfluff/core/parser/rust_parser.py | 692 | # Check if segment has _rstoken attribute (cached original token) | COMMENT |
| LOW | src/sqlfluff/core/parser/grammar/sequence.py | 541 | # Check if we've run out of segments | COMMENT |
| LOW | src/sqlfluff/core/parser/grammar/anyof.py | 226 | # Check if we have matched an option too many times. | COMMENT |
| LOW | src/sqlfluff/utils/reflow/respace.py | 254 | # Check if we've just passed whitespace. If we have, remove it | COMMENT |
| LOW | src/sqlfluff/cli/commands.py | 751 | # Output the results as we go | COMMENT |
| LOW | src/sqlfluff/rules/layout/LT08.py | 109 | # Check if the next code segment is CYCLE or SEARCH | COMMENT |
| LOW | src/sqlfluff/rules/layout/LT09.py | 325 | # Check if the modifier is one we care about | COMMENT |
| LOW | src/sqlfluff/rules/layout/LT15.py | 60 | # Check if we're inside a statement first (highest priority) | COMMENT |
| LOW | src/sqlfluff/rules/layout/LT15.py | 71 | # Check if we're inside a batch but not in a statement | COMMENT |
| LOW | src/sqlfluff/rules/oracle/OR01.py | 60 | # Check if batch contains only slash_buffer_executor statement | COMMENT |
| LOW | src/sqlfluff/rules/tsql/TQ03.py | 66 | # Check if batch contains only GO statement | COMMENT |
| LOW | src/sqlfluff/rules/tsql/TQ02.py | 93 | # Check if the first statement is already a begin_end_block | COMMENT |
| LOW | src/sqlfluff/rules/tsql/TQ02.py | 159 | # Check if there's a statement_terminator after the last statement | COMMENT |
| LOW | src/sqlfluff/rules/convention/CV06.py | 354 | # Check if this code segment contains the last statement | COMMENT |
| LOW | src/sqlfluff/rules/convention/CV06.py | 372 | # Check if there's a semicolon terminator after the last statement | COMMENT |
| LOW | src/sqlfluff/rules/aliasing/AL10.py | 49 | # Check if this FROM expression contains a derived table. | COMMENT |
| LOW | src/sqlfluff/rules/structure/ST02.py | 221 | # Check if the comparison is to NULL or NOT NULL. | COMMENT |
| LOW | src/sqlfluff/rules/structure/ST02.py | 252 | # Check if we can reduce the CASE expression to a single coalesce | COMMENT |
| LOW | src/sqlfluff/rules/structure/ST06.py | 65 | # Check if the view has an explicit column list | COMMENT |
| LOW | src/sqlfluff/rules/structure/ST06.py | 69 | # Check if this bracketed segment contains column references | COMMENT |
| LOW | src/sqlfluff/rules/structure/ST06.py | 88 | # Check if we've seen a more complex select target element already | COMMENT |
| LOW | src/sqlfluff/rules/structure/ST09.py | 332 | # Check if list is made up of a qualified column_reference segment, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/sqlfluff/core/linter/linter.py | 278 | "cd sqlfluffrs && maturin develop --features python" | CODE |
| HIGH | src/sqlfluff/core/parser/match_result.py | 58 | # NOTE: If this is null, it means we've matched a sequence of segments | COMMENT |
| HIGH | src/sqlfluff/cli/commands.py | 1015 | # If some failed then return false | COMMENT |
| HIGH | src/sqlfluff/dialects/dialect_tsql_keywords.py | 12 | null, | CODE |
| HIGH | src/sqlfluff/rules/aliasing/AL09.py | 164 | # We *should* expect all of these to be non-null, but some bug | COMMENT |
| HIGH | src/sqlfluff/rules/capitalisation/CP04.py | 19 | null, | STRING |
| HIGH | src/sqlfluff/rules/capitalisation/CP04.py | 42 | null, | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/generate_parse_fixture_yml.py | 104 | except Exception as err: | CODE |
| LOW | test/core/linter/linted_file_test.py | 263 | except Exception: | CODE |
| LOW | test/api/simple_test.py | 493 | except Exception as err: | CODE |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 131 | except Exception as err: | CODE |
| LOW | …luff-templater-dbt/sqlfluff_templater_dbt/templater.py | 744 | except Exception as err: | CODE |
| LOW | plugins/sqlfluff-templater-dbt/test/templater_test.py | 568 | except Exception as e: | CODE |
| LOW | docsv/scripts/generate-api-docs.py | 200 | except Exception: | CODE |
| LOW | docsv/scripts/generate-api-docs.py | 364 | except Exception: | CODE |
| LOW | utils/build_parsers.py | 336 | except Exception: | CODE |
| LOW | utils/build_parsers.py | 361 | except Exception: | CODE |
| MEDIUM | utils/benchmark_parser.py | 198 | print(f"Error: File not found: {args.file}", file=sys.stderr) | CODE |
| MEDIUM | utils/benchmark_parsing.py | 56 | print(f"Error: Dialect '{dialect}' not found in fixtures") | CODE |
| LOW | utils/benchmark_parsing.py | 94 | except Exception as e: | CODE |
| LOW | utils/benchmark_parsing.py | 126 | except Exception: | CODE |
| LOW | utils/benchmark_parsing.py | 164 | except Exception as e: | CODE |
| MEDIUM | utils/benchmark_parsing.py | 638 | print("Error: Specify --dialect <name> or --all-dialects") | CODE |
| MEDIUM | src/sqlfluff/diff_quality_plugin.py | 69 | print(f"Error parsing JSON output ({e}): {repr(o)}") | CODE |
| LOW | src/sqlfluff/core/linter/runner.py | 134 | except Exception as e: | CODE |
| LOW | src/sqlfluff/core/linter/runner.py | 207 | except Exception as e: | CODE |
| LOW | src/sqlfluff/core/linter/runner.py | 255 | except Exception as e: | CODE |
| LOW | src/sqlfluff/core/linter/discovery.py | 60 | except Exception: | CODE |
| LOW | src/sqlfluff/core/plugin/host.py | 70 | except Exception as err: | CODE |
| LOW | src/sqlfluff/core/parser/rust_parser.py | 368 | except Exception: # pragma: no cover | CODE |
| LOW | src/sqlfluff/core/rules/base.py | 562 | except Exception as e: | CODE |
| LOW | src/sqlfluff/core/rules/base.py | 624 | except Exception as e: | CODE |
| LOW | src/sqlfluff/core/templaters/jinja.py | 766 | except Exception as err: | CODE |
| LOW | src/sqlfluff/core/templaters/jinja.py | 1023 | except Exception: | CODE |
| LOW | src/sqlfluff/cli/commands.py | 82 | except Exception as e: | CODE |
| LOW | src/sqlfluff/cli/commands.py | 103 | except Exception: # pragma: no cover | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/core/parser/grammar/grammar_sequence_test.py | 486 | # NOTE: This functionality doesn't get used much. | COMMENT |
| LOW | plugins/sqlfluff-templater-dbt/test/linter_test.py | 48 | # NOTE: This method is called within the config readout. | COMMENT |
| LOW⚡ | docsv/scripts/generate-all-docs.py | 53 | # Step 1: Generate rule documentation | COMMENT |
| LOW⚡ | docsv/scripts/generate-all-docs.py | 62 | # Step 2: Generate dialect documentation | COMMENT |
| LOW⚡ | docsv/scripts/generate-all-docs.py | 71 | # Step 3: Generate CLI documentation | COMMENT |
| LOW⚡ | docsv/scripts/generate-all-docs.py | 80 | # Step 4: Generate API documentation | COMMENT |
| LOW | src/sqlfluff/core/parser/match_algorithms.py | 523 | # NOTE: This method returns the same as `next_match` in a "no match" | COMMENT |
| LOW | src/sqlfluff/core/dialects/__init__.py | 105 | # NOTE: The result of .expand() is a new class. | COMMENT |
| LOW | src/sqlfluff/utils/reflow/reindent.py | 898 | # NOTE: The following line should never lead to an index error | COMMENT |
| LOW | src/sqlfluff/utils/reflow/elements.py | 818 | # NOTE: This method operates on the existing fix buffer. | COMMENT |
| LOW | src/sqlfluff/cli/commands.py | 798 | # NOTE: The output format is designed for this GitHub action: | COMMENT |
| LOW | src/sqlfluff/cli/commands.py | 842 | # NOTE: The output format is designed for GitHub action: | COMMENT |
| LOW | src/sqlfluff/dialects/AGENTS.md | 185 | ### Step 1: Create Test SQL Files | COMMENT |
| LOW | src/sqlfluff/dialects/AGENTS.md | 209 | ### Step 2: Generate Expected Parse Trees | COMMENT |
| LOW | src/sqlfluff/dialects/AGENTS.md | 224 | ### Step 3: Implement Grammar | COMMENT |
| LOW | src/sqlfluff/dialects/AGENTS.md | 250 | ### Step 4: Regenerate and Verify | COMMENT |
| LOW | src/sqlfluff/dialects/AGENTS.md | 273 | ### Step 5: Run Full Test Suite | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/sqlfluff/AGENTS.md | 61 | Short one-line description. Longer description explaining the purpose, behavior, and usage. Can span multiple l | STRING |
| HIGH | src/sqlfluff/core/templaters/jinja.py | 173 | Take a path and extract macros from it. Args: path (list[str]): A list of paths. env (E | STRING |
| HIGH | src/sqlfluff/core/templaters/jinja.py | 720 | Process a string and return the new string. Note that the arguments are enforced as keywords because Te | STRING |
| HIGH | src/sqlfluff/core/templaters/base.py | 553 | Process a string and return a TemplatedFile. Note that the arguments are enforced as keywords because Templater | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/sqlfluff/core/linter/linter.py | 1141 | CODE | |
| LOW | src/sqlfluff/core/parser/grammar/delimited.py | 38 | CODE | |
| LOW | src/sqlfluff/core/parser/grammar/anyof.py | 67 | CODE | |
| LOW | src/sqlfluff/core/parser/grammar/anyof.py | 311 | CODE | |
| LOW | src/sqlfluff/core/parser/segments/raw.py | 48 | CODE | |
| LOW | src/sqlfluff/core/parser/segments/keyword.py | 20 | CODE | |
| LOW | src/sqlfluff/core/templaters/jinja.py | 1191 | CODE | |
| LOW | src/sqlfluff/cli/formatters.py | 357 | CODE | |
| LOW | src/sqlfluff/cli/commands.py | 688 | CODE | |
| LOW | src/sqlfluff/cli/commands.py | 1330 | CODE | |
| LOW | src/sqlfluff/cli/commands.py | 1447 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | docsv/scripts/generate-all-docs.py | 53 | # Step 1: Generate rule documentation | COMMENT |
| LOW⚡ | docsv/scripts/generate-all-docs.py | 62 | # Step 2: Generate dialect documentation | COMMENT |
| LOW⚡ | docsv/scripts/generate-all-docs.py | 71 | # Step 3: Generate CLI documentation | COMMENT |
| LOW⚡ | docsv/scripts/generate-all-docs.py | 80 | # Step 4: Generate API documentation | COMMENT |
| LOW | src/sqlfluff/rules/tsql/TQ02.py | 156 | # so we need to check if there's a terminator after the last statement | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/sqlfluff/diff_quality_plugin.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/sqlfluff/core/config/fluffconfig.py | 622 | def set_value(self, config_path: Iterable[str], val: Any) -> None: | CODE |
| LOW | src/sqlfluff/core/parser/rust_parser.py | 56 | def set_profiling(enabled: bool) -> None: | CODE |
| LOW | src/sqlfluff/core/parser/rust_parser.py | 101 | def set_native_ast(enabled: bool) -> None: | CODE |
| LOW | src/sqlfluff/core/parser/context.py | 319 | def update_progress(self, char_idx: int) -> None: | CODE |
| LOW | src/sqlfluff/core/parser/segments/raw.py | 369 | __all__ = [ | CODE |
| LOW | src/sqlfluff/core/parser/segments/base.py | 754 | def set_as_parent(self, recurse: bool = True) -> None: | CODE |
| LOW | src/sqlfluff/core/parser/segments/base.py | 762 | def set_parent(self, parent: BaseSegment, idx: int) -> None: | CODE |
| LOW | src/sqlfluff/core/dialects/__init__.py | 109 | __all__ = [ | CODE |
| LOW | src/sqlfluff/core/dialects/base.py | 333 | def set_lexer_matchers(self, lexer_matchers: list[LexerType]) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/sqlfluff/rules/structure/ST10.py | 59 | # often included in auto-generated code. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .pre-commit-config.yaml | 7 | # If adding any exceptions here, make sure to add them to .editorconfig as well | COMMENT |
| LOW | .pre-commit-config.yaml | 40 | # `requirements_dev.txt`. If you update these, make sure to update those too. | COMMENT |
| MEDIUM | examples/06_full_parse_api.py | 57 | # siblings of the parent, you can use .recursive_crawl(). | STRING |
| LOW | src/sqlfluff/core/linter/fix.py | 267 | # If we fail to validate a child segment, make sure to validate this | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | sqlfluffrs/ENGINE.md | 121 | └── utils/rustify.py build # orchestrates, emits Rust | CODE |
| MEDIUM | sqlfluffrs/sqlfluffrs_python/src/lib.rs | 1 | //! sqlfluffrs_python: scaffold for Python-facing bindings | COMMENT |