我正在尝试为我的团队创建 Sqlfluff 自定义规则,目前标准规则工作正常,但是当我尝试运行自定义规则时,会出现错误,表明 linter 未检测到自定义规则
有人知道如何在我的
.sqlfluff
文件中引用新的自定义规则吗?我创建了一个来评估它是否有效:
from sqlfluff.core.rules.base import BaseRule, LintResult
from sqlfluff.core.parser import KeywordSegment, RawSegment
class Rule_L100(BaseRule):
def _eval(self, segment, **kwargs):
if isinstance(segment, RawSegment):
if segment.raw_upper in ["LIKE", "ILIKE"]:
prev_segment = segment.get_direct_parent().segments[-2]
if prev_segment.raw_upper != "COALESCE" and prev_segment.raw_upper != "IFNULL":
return LintResult(anchor=segment, description="LIKE/ILIKE without NULL handling.")
return None
该文件位于 sqlfluff_custom_rules/L100.py。
我的模板器是 Jinja,这是我的 .sqlfluff 文件配置:
[sqlfluff]
templater = jinja
rules = AL01, AL02, AL03, AL04, AL05, AL06, AL07, AM01, AM02, AM03, AM04, AM05,
AM06, AM07, CP01, CP02, CP03, CP04, CP05, CV01, CV02, CV03, CV04, CV05,
CV06, CV07, CV08, CV09, CV10, CV11, JJ01, LT01, LT02, LT03, LT04, LT05,
LT06, LT07, LT08, LT09, LT10, LT11, LT12, LT13, RF01, RF02, RF03,
RF04, RF05, RF06, ST01, ST02, ST03, ST04, ST05, ST06, ST08, TQ01
[sqlfluff:rules]
custom_rules = custom_rules::Rule_L100
我正在运行命令:
sqlfluff lint models/intermediate/any_model.sql --dialect redshift --rules L100
但我收到警告:警告尝试将未知规则引用列入白名单:['L100']
有人可以帮我解决这个问题吗?我已经搜索了文档和其他来源,但是关于如何在 SQLFluff 中实现自定义规则没有明确的答案,并且一些相关链接似乎已损坏。
我还想知道这个问题是否可能是因为自定义规则不可用,除非它们作为插件实现。这样是不是更有意义?