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

Abe*_*Abe 8 python django dependencies

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

...
url(r'^some-url/$', 'my_app.views.some_url_view'),
...
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法让秃鹰意识到视图功能?

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

Rah*_*Jha 6

有没有一种简单的方法可以让秃鹫知道视图函数?

是的,有 - 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
Run Code Online (Sandbox Code Playgroud)

请注意,您还必须将此文件作为参数传递给 Vulture 才能使其工作。在上面的例子中,假设你在appstests目录上运行 Vulture ,如果白名单保存为whitelists/whitelist_view.py,那么 vulture 的命令应该是:

vulture apps/ tests/ whitelists/
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?

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

有关如何最大限度减少误报的更多方法,请参阅Vulture 的文档。还有这个由 Rahul 撰写的关于 Vulture 和误报的博客文章。


Ole*_*siy -6

coverage单独尝试 Ned 的 Batchelder或将其与nose.

只需运行测试用例,coverage html就会得到一份漂亮的报告,逐行显示您的代码,并包含详细的覆盖率信息。之后修剪/删除未使用/未经测试的代码。