有没有一种简单的方法可以让 vulture 了解视图功能?
是的,有 - Vulture 将此过程称为“白名单”。基本思想是明确“使用” Vulture 报告为未使用的代码。这可以通过为未使用的代码创建一个模拟对象来完成。由于创建这样的模拟对象是一种相当普遍的做法,Vulture 最近开始vulture.whitelist_utils.Whitelist
为这个非常特定的目的发布一个抽象类。
对于您提供的示例视图函数,白名单可能如下所示:
# whitelists/whitelist_view.py
from vulture.whitelist_utils import Whitelist
view_whitelist = Whitelist()
# Create an attribute named exactly as your
# unused object - a function in this case
view_whitelist.some_url_view
请注意,您还必须将此文件作为参数传递给 Vulture 才能正常工作。在上面的例子中,假设你在apps
和tests
目录上运行 Vulture,如果白名单保存为whitelists/whitelist_view.py
,那么 vulture 的命令应该是:
vulture apps/ tests/ whitelists/
这是如何运作的?
由于您还将白名单文件与要分析的文件一起传递,因此 vultureast
为它们创建了 's,并且在解析这些抽象语法树时,Vulture 创建了一个通用集来存储已使用和已定义对象的名称。由于误报函数的名称出现在两者中,因此不被视为未使用。
有关如何减少误报的更多方法,请参阅Vulture 的文档。Rahul也有这篇关于 Vulture 和误报的博客文章。