从Python纸条上跑秃鹫

2024-05-26 11:10:24 发布

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

我试图找到一种在python脚本中运行vulture(在python项目中查找未使用的代码)的方法。
秃鹫文档可以在这里找到: https://pypi.org/project/vulture/

有人知道怎么做吗?你知道吗

我知道使用vulture的唯一方法是通过shell命令。 我尝试使用模块子进程从脚本中tun shell命令,类似于:

process = subprocess.run(['vulture', '.'], check=True, 
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,universal_newlines=True)

我认为这和运行shell命令“vulture”的效果是一样的

但它不起作用。你知道吗

有人能帮忙吗? 谢谢


Tags: 项目方法代码文档httpsorg命令project
2条回答

秃鹫德夫在这里。你知道吗

Vulture包公开了一个名为^{}的API,它在内部使用该API在解析命令行参数后运行分析(在vulture.main中)。你知道吗

它接收Python文件/目录的列表。对于每个目录,Vulture分析所有包含的*.py文件。你知道吗

要分析当前目录:

import vulture
v = vulture.Vulture()
v.scavenge(['.'])

如果只想将结果打印到stdout,可以调用:

v.report()

不过,也可以对Vulture的结果执行自定义分析/筛选。方法^{}返回^{}对象的列表—其中包含未使用代码的名称、类型和位置。你知道吗

为了回答这个问题,我要打印所有未使用对象的名称:

for item in v.get_unused_code():
     print(item.name)

有关详细信息,请参阅-https://github.com/jendrikseipp/vulture

我看到您想要捕获控制台上显示的输出:

下面的代码可能会有所帮助:

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

链接:

https://docs.python.org/3/library/subprocess.html

相关问题 更多 >