我正在尝试找到一种在python脚本中运行秃鹰(在python项目中找到未使用的代码)的方法。
秃documentation文档可以在这里找到:
https://pypi.org/project/vulture/
有人知道怎么做吗?
我知道使用秃鹰的唯一方法是通过shell命令。 我试图使用模块子进程从脚本中调整Shell命令,如下所示:
process = subprocess.run(['vulture', '.'], check=True,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,universal_newlines=True)
尽管如此,我与运行shell命令“ vulture”具有相同的效果。
但它不起作用。
有人可以帮忙吗? 谢谢
答案 0 :(得分:0)
我看到您想捕获控制台上显示的输出:
下面的代码可能有帮助:
import tempfile
import subprocess
def run_command(args):
with tempfile.TemporaryFile() as t:
try:
out = subprocess.check_output(args,shell=True, stderr=t)
t.seek(0)
console_output = '--- Provided Command: --- ' + '\n' + args + '\n' + t.read() + out + '\n'
return_code = 0
except subprocess.CalledProcessError as e:
t.seek(0)
console_output = '--- Provided Command: --- ' + '\n' + args + '\n' + t.read() + e.output + '\n'
return_code = e.returncode
return return_code, console_output
您的预期输出将显示在console_output
链接:
答案 1 :(得分:0)
这里有秃dev开发者。
Vulture软件包公开了一个名为scavenge
的API,该API在解析命令行参数(在vulture.main中)后在内部用于运行分析。
它包含一个Python文件/目录列表。对于每个目录,Vulture都会分析所有包含的* .py文件。
要分析当前目录:
import vulture
v = vulture.Vulture()
v.scavenge(['.'])
如果只想将结果打印到stdout,则可以致电:
v.report()
但是,也可以对Vulture的结果执行自定义分析/过滤。方法vulture.get_unused_code
返回一个vulture.Item
对象的列表-这些对象包含未使用代码的名称,类型和位置。
为了这个答案,我只打印所有未使用对象的名称:
for item in v.get_unused_code():
print(item.name)
有关更多信息,请参见-https://github.com/jendrikseipp/vulture