我正在使用 pyre-checking 进行静态类型测试,我想忽略我项目中的特定错误。
例如:未定义属性[16]:模块google.protobuf.struct_pb2
没有属性_STRUCT
。
假设如果我想从我的项目中忽略这个错误,我该怎么做?
我正在使用 pyre-checking 进行静态类型测试,我想忽略我项目中的特定错误。
例如:未定义属性[16]:模块google.protobuf.struct_pb2
没有属性_STRUCT
。
假设如果我想从我的项目中忽略这个错误,我该怎么做?
我不熟悉您的项目,但您有更多选择。我想你可以选择适合你的。
您可以使用以下注释掉的行来抑制代码中的特定错误:
# pyre-ignore[16]:
That part which raises the error
或者
That part which raises the error # pyre-ignore[16]
如果在 Python 文件的开头声明以下注释掉的行,则可以抑制文件中的所有错误:
# pyre-ignore-all-errors
您可以使用正则表达式排除有问题的文件或文件(不完全推荐,因为其他错误也会被抑制)。
你可以通过两种方式做到这一点:
exclude
参数放入 PyRe 配置文件 ( .pyre_configuration
)exclude
在命令行中使用参数 ( --exclude EXCLUDE Exclude files and directories matching this regexp from parsing
)老实说,我认为您想完全禁用Undefined attribute [16]
分析中的错误,但不幸的是目前 PyRe 不支持此选项。也许如果你重写 PyRe 实现的某些部分,你可以达到它,但它不是很好,我想这不是一个选择。
参考资料:
我相信您可以在文档中找到您要查找的内容。所以你需要做的是根据文档写一个具体的评论。在你的情况下,这样的事情会有所帮助:
# pyre-ignore[16]
here will be the line of code causing the error
另一种选择是修复此错误而不是抑制它。
.py
当您使用文件中存在但未在相应文件中定义的类或属性或函数时,会发生此类错误.pyi
。换句话说,此类错误发生在源代码和类型提示存根之间的不一致处。在您的情况下,_STRUCT
该类在 中定义struct_pb2.py
,但未在.pyi
Pyre 开发人员提供的文件中定义,即/pyre_check/typeshed/third_party/2and3/google/protobuf/struct_pb2.pyi
.
在这种情况下,您可以尝试.pyi
从相应包的开发人员处获取文件并替换 pyretypeshed
目录中的文件。但是,.pyi
包的开发者提供的文件通常不会注释以 . 开头的类或方法_
。根据PEP 8 -- Python 代码样式指南 | Python.org保留以单个下划线开头的名称供内部使用
_single_leading_underscore:弱“内部使用”指标。例如,from M import * 不会导入名称以下划线开头的对象。
为通过 from M import * 使用而设计的模块应使用 all机制来防止导出全局变量,或使用在此类全局变量前加下划线的旧约定(您可能希望这样做以指示这些全局变量是“模块非公共”)。
仅对非公共方法和实例变量使用一个前导下划线。
公共属性不应有前导下划线。
内部接口(包、模块、类、函数、属性或其他名称)仍应以单个前导下划线作为前缀。
如果您无法从开发人员那里获得更新的 .pyi 文件,或者它不包含带有下划线前缀的名称定义,您可以自己将这些名称添加到 Pyre 开发人员提供的 .pyi 文件中。
Errors |还有一个小提示。Pyre (pyre-check.org)
花了太多时间挖掘,最终直接向我指出,但您可以在文件顶部抑制给定类型的所有错误:
# pyre-ignore-all-errors[16]
# pyre-ignore-all-errors[56]