为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕丝7291255 2022-01-11 18:02:46
我正在使用 pyre-checking 进行静态类型测试,我想忽略我项目中的特定错误。例如:未定义属性[16]:模块google.protobuf.struct_pb2没有属性_STRUCT。假设如果我想从我的项目中忽略这个错误,我该怎么做?
查看完整描述

3 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

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


您可以使用以下注释掉的行来抑制代码中的特定错误:


# 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 实现的某些部分,你可以达到它,但它不是很好,我想这不是一个选择。


查看完整回答
反对 回复 2022-01-11
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

我相信您可以在文档中找到您要查找的内容。所以你需要做的是根据文档写一个具体的评论。在你的情况下,这样的事情会有所帮助:


# pyre-ignore[16]

here will be the line of code causing the error


查看完整回答
反对 回复 2022-01-11
?
呼如林

TA贡献1798条经验 获得超3个赞

另一种选择是修复此错误而不是抑制它。

当您使用.py文件中存在但未在相应.pyi文件中定义的类或属性或函数时,会发生此类错误。换句话说,此类错误发生在源代码和类型提示存根之间的不一致处。在您的情况下,_STRUCT该类在 中定义struct_pb2.py,但未在.pyiPyre 开发人员提供的文件中定义,即/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)


查看完整回答
反对 回复 2022-01-11
  • 3 回答
  • 0 关注
  • 282 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号