我正在使用pyre-check进行静态类型测试,我想忽略项目中的特定错误。
Ex:未定义属性[16]:模块google.protobuf.struct_pb2
没有属性_STRUCT
。
假设我想从项目中忽略此错误怎么办?
答案 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种方式做到这一点:
# pyre-ignore-all-errors
参数放入您的PyRe配置文件(exclude
).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 文件中。
答案 3 :(得分:0)
挖掘太多,最后直接向我指出,但您可以使用以下命令在文件顶部抑制给定类型的所有错误:
# pyre-ignore-all-errors[16]
# pyre-ignore-all-errors[56]