【问题标题】:pylint incorrectly identifies constant name as C0103 not conforming to const-rgx expressionpylint 错误地将常量名称标识为 C0103 不符合 const-rgx 表达式
【发布时间】:2018-05-07 08:50:40
【问题描述】:

我已经对我的 python 代码进行了一段时间的 linting,以使其更符合 Python 风格,为此我一直在使用 pylint 来帮助识别有问题的代码块。但是,现在我遇到了一种奇怪的错误,其中 pylint 将格式正确的常量名称标记为不符合提供的正则表达式。

最初,该常量被命名为main,它应该与正则表达式[a-z\_][a-z0-9\_]{2,30}$ 匹配,但我还是收到了违反约定的消息。我尝试将常量更改为 run_main 而没有任何更改。我什至尝试将正则表达式更改为[\_][a-z0-9\_]{2,30}$|[a-z][\_][a-z0-9\_]{2,30}$,但仍然违反约定。我已经尝试在几个正则表达式测试站点上测试表达式,以确保我没有错。这是 pylint 中的错误还是我遗漏了一些明显的东西?

常量在以下代码块中定义:

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)

【问题讨论】:

  • 仅供参考:_ 是一个字符,你不需要转义它。
  • @WiktorStribiżew 我从 pylint 生成的 pylintrc 文件中编辑,其中包含原始序列,所以我只是假设它是必要的。但很高兴知道,谢谢。
  • 为什么不能简单地使用 - r'[_]?[a-z0-9\_]{2,30}$' ?可选下划线后跟 alhapnum_。这个正则表达式还有一个小问题,它可能与 20_main 之类的匹配,这不是一个有效的东西。所以像r'[_]?[a-z][a-z0-9_]{1,30}$' 这样的东西会更接近你想要的
  • @gabhijit 这也不起作用。我仍然收到相同的 C0103 消息。
  • 有趣的是,注释掉 const-rgx 并设置 const-naming-style=any 会抑制消息,但代价是会丢失对常量的样式检查。

标签: regex python-3.x pylint pylintrc


【解决方案1】:

Pylint 希望在最外层范围内分配的任何变量都是大写的。将其称为 MAIN 应删除警告。

【讨论】:

  • 如果是这样,那么消息是不是错误的?鉴于消息文本,我看不出这应该是如何显而易见的。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
相关资源
最近更新 更多