如何忽略整个项目的pyre-check python软件包中的特定错误

时间:2019-04-16 12:18:33

标签: python

我正在使用pyre-check进行静态类型测试,我想忽略项目中的特定错误。

Ex:未定义属性[16]:模块google.protobuf.struct_pb2没有属性_STRUCT

假设我想从项目中忽略此错误怎么办?

4 个答案:

答案 0 :(得分:2)

我对您的项目不熟悉,但是您有更多选择。我想您可以为您选择合适的。

您可以使用以下注释行删除代码中的特定错误:

AADSTS50052: The password entered exceeds the maximum length of '256'.

# pyre-ignore[16]:
That part which raises the error

如果您在Python文件的开头声明以下注释行,则可以禁止文件中的所有错误:

That part which raises the error  # pyre-ignore[16]

您可以排除有问题的文件或带有正则表达式的文件(不建议这样做,因为其他错误也会被排除)。

您可以通过2种方式做到这一点:

  1. # pyre-ignore-all-errors 参数放入您的PyRe配置文件(exclude
  2. 在命令行(.pyre_configuration)中使用exclude参数

老实说,我认为您想完全禁用分析中的--exclude EXCLUDE Exclude files and directories matching this regexp from parsing错误,但是很遗憾,PyRe当前不支持此选项。也许如果您重写PyRe实现的某些部分,则可以实现,但是效果不佳,我想这不是一个选择。

引用:

答案 1 :(得分:0)

我相信您正在寻找的内容可以在the documentation中找到。 因此,您需要做的是根据文档写一个特定的注释。 在您的情况下,这样会有所帮助:

# pyre-ignore[16]
here will be the line of code causing the error

答案 2 :(得分:0)

另一个选择是修复这个错误而不是抑制它。

当您使用 .py 文件中存在但未在相应的 .pyi 文件中定义的类或属性或函数时,会发生此类错误。换句话说,此类错误发生在源代码和类型提示存根之间的不一致时。在您的情况下,_STRUCT 类是在 struct_pb2.py 中定义的,但未在 Pyre 开发人员提供的 .pyi 文件中定义,即 /pyre_check/typeshed/third_party/2and3/google/protobuf/struct_pb2.pyi

在这种情况下,您可以尝试从相应软件包的开发人员那里获取.pyi 文件并替换pyre typeshed 目录中的文件。但是,包的开发者提供的 .pyi 文件通常不会注释以 _ 开头的类或方法。根据{{​​3}},以下划线开头的名称保留供内部使用

<块引用>

_single_leading_underscore:弱“内部使用”指标。例如, from M import * 不会导入名称以 下划线。

<块引用>

设计为通过 from M import * 使用的模块应该使用 all 防止导出全局变量的机制,或者使用旧的惯例,在这些全局变量前面加上下划线(你 可能想表明这些全局变量是“模块非公开的”)。

<块引用>

仅对非公共方法和实例使用一个前导下划线 变量。

<块引用>

公共属性不应有前导下划线。

<块引用>

内部接口(包、模块、类、函数、属性 或其他名称)仍应以单个前导 下划线。

如果您无法从开发人员那里获得更新的 .pyi 文件,或者它不包含以下划线前缀的名称定义,您可以自己将这些名称添加到 Pyre 开发人员提供的 .pyi 文件中。

还有一个小提示 PEP 8 -- Style Guide for Python Code | Python.org

答案 3 :(得分:0)

挖掘太多,最后直接向我指出,但您可以使用以下命令在文件顶部抑制给定类型的所有错误:

# pyre-ignore-all-errors[16]
# pyre-ignore-all-errors[56]