有没有一种简单的方法来使用django秃鹰?

时间:2012-08-23 23:43:09

标签: python django dependencies

我正在尝试清理django中的一些纠结的遗留代码。 Vulture看起来不错,但它似乎不知道如何找到从urls.py引用的视图函数。这并不太令人惊讶,因为大多数函数都包含在字符串中:

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

有没有一种简单的方法让vulture知道视图函数?

我已经找到了一件事:我已经为代码编写了相当广泛的测试。目前,秃鹫错过了这些测试,但是如果有一些方法可以让秃鹰知道这些测试,我认为所有观点都会被包括在内。

2 个答案:

答案 0 :(得分:4)

  

有没有一种简单的方法让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才能使其正常工作。在上面的示例中,假设您在appstests目录上运行Vulture,如果白名单保存为whitelists/whitelist_view.py,则vulture命令应为:

vulture apps/ tests/ whitelists/

这是如何运作的?

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

有关如何最大限度地减少误报的更多方法,请浏览Vulture's Documentation。还有blog post by Rahul on Vulture and false positives.

答案 1 :(得分:-3)

单独试用Ned的Batchelder coverage或将其与nose一起使用。

只需浏览测试用例,coverage html将为您提供一个漂亮的报告,逐行显示您的代码,并提供详细的覆盖率信息。之后修剪/删除未使用/未经测试的代码。