有没有一个简单的方法来使用秃鹫与Django?

2024-05-26 11:08:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图清理django中一些混乱的遗留代码。Vulture看起来是个不错的选择,但它似乎不知道如何查找从中引用的视图函数网址.py. 这并不奇怪,因为大多数函数都是作为字符串包含的:

...
url(r'^some-url/$', 'my_app.views.some_url_view'),
...

有没有一个简单的方法让秃鹫知道视图的功能?在

我要做的一件事是:我为代码编写了相当广泛的测试。目前,秃鹫错过了这些测试,但如果有什么方法可以让秃鹫意识到这些测试,我想所有的观点也会包括在内。在


Tags: django方法函数字符串代码py视图app
2条回答

单独使用Ned的Batchelder ^{}或将其与^{}一起使用。在

只需运行这些测试用例,coverage html就会得到一个漂亮的报告,一行一行地显示代码,并提供详细的覆盖率信息。删减/删除未使用/未测试的代码。在

Is there a simple way to make vulture aware of the view functions?

是的,有-秃鹫称这个过程为“白名单”。基本思想是显式地“使用”代码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才能正常工作。在上面的示例中,假设您正在appstests目录上运行Vulture,如果白名单保存为whitelists/whitelist_view.py,那么Vulture的命令应该是:

^{pr2}$

这是怎么回事?

由于您还传递了白名单文件和要分析的文件,vulture为它们都创建了ast,在解析这些抽象语法树时,vulture创建了一个公共集,用于存储已使用和定义的对象的名称。由于假阳性函数的名称同时出现在这两个函数中,因此不将其视为未使用的函数。在

有关如何减少误报的更多方法,请通过Vulture's Documentation。还有这个blog post by Rahul on Vulture and false positives.

相关问题 更多 >