如何以编程方式将 Ned Batchelder 的脚本用于 McCabe 的复杂性?

问题描述

我正在尝试使用 Ned Batchelder's script获取使用 Python 3 编写的代码的复杂性,但我想从脚本中运行它,而不是通过命令行运行它。

我已经从 pypi 安装了 McCabe,版本是 0.6.1。我通过 Jupyter Notebook 在 VSCode 中使用 Python 3.8。

从 GitHub 页面阅读 mccabe.py 后,我目前正在尝试:

SELECT
    a.E_PST_DATE,case when unfilled = 'true' then 'unfilled' else a.bidder end  bidder,a.browser,a.site_name,a.placement,a.device_name,b.PAGENUMBER,(SUM(a.CPM)/1000) revenue,COUNT(a.sessiontoken) impressions,COUNT(b.*) page_views
FROM Table1 a
LEFT JOIN Table2 b ON a.SESSIONTOKEN = b.SESSIONTOKEN
    AND a.SESSIONDEPTH = b.SESSIONDEPTH AND b.PST_DATE > current_date - 3 
WHERE a.E_PST_DATE > current_date - 3 AND b.PAGENUMBER IS NOT NULL
GROUP BY 1,2,3,4,5,6,7

然而,我从上面的代码得到的结果是这样的:

from mccabe import *
code = open("testFile.py").read()
res = get_code_complexity(code,threshold=7,filename="testFile.py")
print(res)

我不知道如何解释这个,因为当我从命令行运行应用程序时,我得到了这个:

testFile.py:5:1: C901 'If 5' is too complex (63)
1

这是什么意思?我认为复杂性将是这个 63,但在 $ python -m mccabe testFile.py If 5 63 变量中我得到 1 返回。 testFile.py 位于我运行 .ipynb 的同一目录中。我上传了它,因为我认为它可能会有所帮助。

PS:我知道我可以为此使用 Radon,但它似乎只计算 McCabe 复杂度,如果代码函数内,而不是“松散”。我试图分析的绝大多数程序都不使用 main()。我作为示例使用的 testFile.py 在使用氡气时会生成一个空白列表,这就是我尝试使用 Ned Batchelder 的 McCabe 的原因。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)