是否有一个linter检测被deprecated
包中的@deprecated
装饰器标记为不推荐使用的函数的用法
例如在
from deprecated import deprecated
def realfun():
print('Hey there')
@deprecated(reason="this is a test")
def myfun():
realfun()
if __name__ == "__main__":
myfun()
当以PYTHONWARNINGS="default::DeprecationWarning" python testfile.py
的形式运行它时,我会得到一个运行时警告,但是pylint
、mypy
、flake8
似乎(至少我是如何运行它们的)很乐意调用myfun
正如其他人提到的,您必须编写一个定制的
pylint
检查器。其工作方式是定义一个子类pylint
的BaseChecker
的类,并定义要发出的警告以及何时发出警告下面的代码正是这样做的。它有点适合于
deprecated
包的特定关键字参数,但通常当有人使用名为deprecated
的装饰器来标记函数或类,并发出pylint
警告W0001
(可以随意更改,例如错误)时,它就可以工作。它还应提供信息性信息要使用它,请将代码添加到名为
deprecated_checker.py
的文件中,然后将包含deprecated_checker.py
的文件夹添加到PYTHONPATH
或将源代码添加到pylint/checkers
文件夹中。然后,您可以通过使用load-plugins=deprecated_checker
选项运行pylint
进行lint有关编写自己的跳棋的更多信息,请look here
如果您已经完成了所有这些,那么linting存根文件
tmp.py
使用命令
pylint load-plugins=deprecated_checker disable=all enable=deprecated tmp.py
将获得您应该查看How to warn about class (name) deprecation以将自己的规则添加到lint中。没有标准的库方法来标记弃用,因此它不会内置到工具中。最接近的是
warnings
库中的特定类相关问题 更多 >
编程相关推荐