首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >腾讯云代码分析-SQLFluff使用指引

腾讯云代码分析-SQLFluff使用指引

作者头像
CodeDog
发布2024-09-27 13:55:25
发布2024-09-27 13:55:25
75200
代码可运行
举报
运行总次数:0
代码可运行

官网地址: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:

代码语言:javascript
代码运行次数:0
运行
复制
WITH cte AS (
    SELECT * FROM foo
)

SELECT * FROM cte
UNION
SELECT a, b FROM t

Good Case:

代码语言:javascript
代码运行次数:0
运行
复制
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:

代码语言:javascript
代码运行次数:0
运行
复制
CREATE TABLE IF NOT EXISTS `t_test` (
    `id` int(11) NOT NULL AUTO_INCREMENT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Good Case:

代码语言:javascript
代码运行次数:0
运行
复制
CREATE TABLE IF NOT EXISTS `t_test` (
    `id` BIGINT(20) NOT NULL AUTO_INCREMENT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

使用指引

分析方案 -> 规则配置 -> 添加规则 -> 查找所属工具,按需添加规则(支持一键添加规则)

可以在规则参数中配置规则使用的方言:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云代码分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工具介绍
  • 规则介绍
  • 使用指引
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档