官网地址:https://tca.tencent.com/
官网介绍:https://cloud.tencent.com/product/tcap 官方开源:(点击最下方【阅读原文】可直达)https://github.com/Tencent/CodeAnalysis 国内镜像:https://git.code.tencent.com/Tencent_Open_Source/CodeAnalysis
SQLFluff是一个开源、方言灵活且可配置的 SQL linter,其支持的方言多达二十多种,包括但不限于:mysql,oracle,postgres。
(SQL方言:指不同的数据库系统,在SQL的实现上可能存在一些差异,包括语法规则、数据类型、函数和特性等方面。
官方规则:
规则名称:ambiguous.column_count 规则介绍:使用 * 查询所有列,其中如果上游表的架构发生更改,则列的数量或顺序也会发生变化。 通常应该避免这种情况,因为它可能会导致性能下降、导致重要的架构更改未被检测到或破坏生产代码。 Bad Case:
WITH cte AS (
SELECT * FROM foo
)
SELECT * FROM cte
UNION
SELECT a, b FROM t
Good Case:
WITH cte AS (
SELECT * FROM foo
)
SELECT a, b FROM cte
UNION
SELECT a, b FROM t
更多官方规则案例以及讲解参考官方文档:https://docs.sqlfluff.com/en/stable/rules.html#
自研规则:
规则名称:codedog.checkauto
规则介绍:来自用户的需求,创建数据表时,如果列设置了自增属性,需要定义column_type为BIGINT
Bad Case:
CREATE TABLE IF NOT EXISTS `t_test` (
`id` int(11) NOT NULL AUTO_INCREMENT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Good Case:
CREATE TABLE IF NOT EXISTS `t_test` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
分析方案 -> 规则配置 -> 添加规则 -> 查找所属工具,按需添加规则(支持一键添加规则)
可以在规则参数中配置规则使用的方言: