Regex pylint错误地将常量名称标识为C0103,不符合常量rgx表达式
为了使Pythonian更具Pythonian性,我已经对python代码进行了一段时间的lint,为此,我一直在使用pylint来帮助识别有问题的代码块。然而,现在我遇到了一种奇怪的错误,pylint将格式正确的常量名称标记为不符合提供的正则表达式 最初,常量名为Regex pylint错误地将常量名称标识为C0103,不符合常量rgx表达式,regex,python-3.x,pylint,pylintrc,Regex,Python 3.x,Pylint,Pylintrc,为了使Pythonian更具Pythonian性,我已经对python代码进行了一段时间的lint,为此,我一直在使用pylint来帮助识别有问题的代码块。然而,现在我遇到了一种奇怪的错误,pylint将格式正确的常量名称标记为不符合提供的正则表达式 最初,常量名为main,它应该与regex[a-z\\][a-z0-9\\\\\]{2,30}$匹配,但我还是收到了违反约定的消息。我尝试将常量更改为run\u main,没有任何更改。我甚至尝试将正则表达式更改为[\\\\\\][a-z0-9\\
main
,它应该与regex[a-z\\][a-z0-9\\\\\]{2,30}$
匹配,但我还是收到了违反约定的消息。我尝试将常量更改为run\u main
,没有任何更改。我甚至尝试将正则表达式更改为[\\\\\\][a-z0-9\\\]{2,30}$\124;[a-z][\\\\\\\][a-z0-9\\\\\\{2,30}$
,但违反约定的情况仍然存在。我已经尝试在几个正则表达式测试站点上测试这些表达式,以确保我没有弄错。这是pylint中的一个bug还是我遗漏了一些明显的东西
该常数在以下代码块中定义:
if __name__ == "__main__":
javabridge.start_vm(class_path=bf.JARS)
run_main = mainInterface()
我的pylintrc文件的相关部分是:
# Naming style matching correct constant names
#const-naming-style=
# Regular expression matching correct constant names. Overrides const-naming-
# style
const-rgx='[\_][a-z0-9\_]{2,30}$|[a-z][\_][a-z0-9\_]{2,30}$'
这将产生以下输出:
393,4,convention,C0103:Constant name "run_main" doesn't conform to "'[\\_]
[a-z0-9\\_]{2,30}$|[a-z][\\_][a-z0-9\\_]{2,30}$'" pattern ("'[\\_][a-z0-
9\\_]{2,30}$|[a-z][\\_][a-z0-9\\_]{2,30}$'" pattern)
Pylint希望在最外层范围内分配的任何变量都是大写的。将其命名为MAIN将删除警告 仅供参考:
\uu
是一个字字符,您不需要对其进行转义。@WiktorStribiżew我是从pylint生成的pylintrc文件编辑的,该文件包含原始序列,因此我认为这是必要的。但是很高兴知道,谢谢。为什么你不能简单地使用-r'[\u]?[a-z0-9\\u]{2,30}$'
?可选下划线,后跟alhapnum_。这个正则表达式也有一个小问题,它可能匹配20_main之类的东西,这是无效的。所以像r'[]?[a-z][a-z0-9'{1,30}$'
这样的东西会更接近你想要的want@gabhijit这也不管用。我仍然收到相同的C0103消息。可能有意思的是,注释掉const rgx
并设置const naming style=any
将抑制消息,代价是丢失对常量的样式检查。如果是这种情况,那么消息不是错了吗?我看不出这在短信中是多么明显。