- 新增三个 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 种规则全覆盖)
3.4 KiB
3.4 KiB
代码审查报告
文件: data\demo-sqlfluff\src\01_aliasing.sql
语言: sql
耗时: 102.5s
分析工具: sqlfluff
总计: 12 | 错误: 10 | 警告: 1 | 建议: 1
静态分析 · 9 个问题
- 🔴
sqlfluff:AL02L5 第 5 行:列别名使用隐式/显式混用的别名形式。 建议: 请为列别名显式添加 AS 关键字,例如将col1 col1_alias改为col1 AS col1_alias。 - 🔴
sqlfluff:AM05L20 第 20 行:JOIN 子句应使用完全限定的列引用。 建议: 为每个表使用唯一别名,并确保 ON 条件中的列都以该表别名限定;例如ON t1.id = t2.ref_id,而不是other_table.ref_id。 - 🔴
sqlfluff:AL04L21 第 21 行:表别名 't1' 重复使用。表别名应保持唯一。 建议: 将第二张表 other_table 的别名改为唯一别名(如 t2),并同步修改 ON 条件中的引用为t1.id = t2.ref_id。 - 🔴
sqlfluff:LT02L21 第 21 行:'ON' 前应换行且不应有缩进。 建议: 将 ON 放到新的行,并不加额外缩进:other_table AS t1\nON t1.id = other_table.ref_id; - 🔴
sqlfluff:AL05L27 第 27 行:表别名 'unused_alias' 在 SELECT 语句中从未使用。 建议: 移除未使用的表别名,直接使用表名;或若该别名有意义,在查询中引用它。 - 🔴
sqlfluff:AL08L32 第 32 行:列别名 'shared_alias' 与第 31 行的别名重复。 建议: 为这两列设置不同的别名,例如将第 32 行的name AS shared_alias改为name AS name_alias。 - 🔴
sqlfluff:AL09L38 第 38 行:列不应使用与列名相同的别名(自别名)。 建议: 移除AS id,直接写id;或改成一个有意义的别名如id_alias。 - 🔴
sqlfluff:AL10L46 第 46 行:派生表必须指定别名。 建议: 为子查询添加表别名,例如(SELECT COUNT(*) AS cnt FROM my_table) AS cnt_table。 - 🔴
sqlfluff:LT12L47 第 47 行:文件必须以单个尾随换行符结束。 建议: 在文件末尾添加一个换行符,并确保没有多余的空行或行尾空格。
AI 审查 · 3 条建议
- 🔴 [AI] [bug]
invalid-alias-original-table-referenceL21 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-tableL46 不必要的外层查询嵌套 第 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-aliasL11 聚合列缺少别名 第 11 行SUM(amount)没有显式别名,返回列名会依赖具体数据库的默认命名规则,不利于后续代码维护与结果集访问。 建议: 为聚合表达式添加有意义且稳定的别名,例如SUM(amount) AS total_amount。