Files
2026Technology-Competition/data/demo-sqlfluff/reports/01_aliasing-review.md
T
范智鹏 c92249a044 docs: 归档 demo 工程样例与插件实测报告
- 新增三个 demo 工程(demo-eslint / demo-sqlfluff / demo-stylelint):各含 src/ 样例代码与覆盖率映射(run-coverage.mjs、coverage_map.json、stylelint_line_map.json)

- 归档各 demo 的插件实测导出报告(reports/):

  - demo-eslint:common.js / esm-demo.js / legacysyntax.cjs / typescript.ts 审查报告 + 覆盖率报告(292/292 条零偏差,126 种规则全覆盖)

  - demo-sqlfluff:11 个 SQL 样例审查报告 + 覆盖率报告(113/113 条零偏差,57 种规则全覆盖,含 JJ01 行号缺陷修复后的复测验证)

  - demo-stylelint:common.css / empty-source.css 审查报告 + 覆盖率报告(145/145 条零偏差,68 种规则全覆盖)
2026-08-25 22:00:19 +08:00

3.4 KiB

代码审查报告

文件: data\demo-sqlfluff\src\01_aliasing.sql 语言: sql 耗时: 102.5s 分析工具: sqlfluff


总计: 12 | 错误: 10 | 警告: 1 | 建议: 1

静态分析 · 9 个问题

  • 🔴 sqlfluff:AL02 L5 第 5 行:列别名使用隐式/显式混用的别名形式。 建议: 请为列别名显式添加 AS 关键字,例如将 col1 col1_alias 改为 col1 AS col1_alias
  • 🔴 sqlfluff:AM05 L20 第 20 行:JOIN 子句应使用完全限定的列引用。 建议: 为每个表使用唯一别名,并确保 ON 条件中的列都以该表别名限定;例如 ON t1.id = t2.ref_id,而不是 other_table.ref_id
  • 🔴 sqlfluff:AL04 L21 第 21 行:表别名 't1' 重复使用。表别名应保持唯一。 建议: 将第二张表 other_table 的别名改为唯一别名(如 t2),并同步修改 ON 条件中的引用为 t1.id = t2.ref_id
  • 🔴 sqlfluff:LT02 L21 第 21 行:'ON' 前应换行且不应有缩进。 建议: 将 ON 放到新的行,并不加额外缩进:other_table AS t1\nON t1.id = other_table.ref_id;
  • 🔴 sqlfluff:AL05 L27 第 27 行:表别名 'unused_alias' 在 SELECT 语句中从未使用。 建议: 移除未使用的表别名,直接使用表名;或若该别名有意义,在查询中引用它。
  • 🔴 sqlfluff:AL08 L32 第 32 行:列别名 'shared_alias' 与第 31 行的别名重复。 建议: 为这两列设置不同的别名,例如将第 32 行的 name AS shared_alias 改为 name AS name_alias
  • 🔴 sqlfluff:AL09 L38 第 38 行:列不应使用与列名相同的别名(自别名)。 建议: 移除 AS id,直接写 id;或改成一个有意义的别名如 id_alias
  • 🔴 sqlfluff:AL10 L46 第 46 行:派生表必须指定别名。 建议: 为子查询添加表别名,例如 (SELECT COUNT(*) AS cnt FROM my_table) AS cnt_table
  • 🔴 sqlfluff:LT12 L47 第 47 行:文件必须以单个尾随换行符结束。 建议: 在文件末尾添加一个换行符,并确保没有多余的空行或行尾空格。

AI 审查 · 3 条建议

  • 🔴 [AI] [bug] invalid-alias-original-table-reference L21 ON 条件中混用原始表名与别名 第 21 行中,other_table AS t1 为表设置了别名,但随后 ON 子句使用 other_table.ref_id 引用该表。大多数 SQL 方言中,一旦表指定别名,就必须用别名限定列,不能再用原始表名;且该查询还存在重复别名 t1,导致 t1.id 指代不明。 建议: 为 other_table 使用唯一别名(如 t2),并将 ON 条件改为 t1.id = t2.ref_id,同时保持两个表别名唯一。
  • 🟡 [AI] [performance] redundant-derived-table L46 不必要的外层查询嵌套 第 43-46 行 SELECT cnt FROM (SELECT COUNT(*) AS cnt FROM my_table) 先用子查询计算 COUNT(*),再由外层选择 cnt;这层封装没有实际作用,反而让 SQL 更难阅读且可能妨碍优化器简化执行计划。 建议: 直接写成 SELECT COUNT(*) AS cnt FROM my_table;,既避免派生表别名问题,也减少不必要的嵌套。
  • 🔵 [AI] [style] missing-column-alias L11 聚合列缺少别名 第 11 行 SUM(amount) 没有显式别名,返回列名会依赖具体数据库的默认命名规则,不利于后续代码维护与结果集访问。 建议: 为聚合表达式添加有意义且稳定的别名,例如 SUM(amount) AS total_amount