问题:如何分析Python代码以找出问题区域?
我有一个跨多个项目的大型资源库。我想生成一份有关源代码运行状况的报告,以确定需要解决的问题区域。
具体来说,我想找出循环复杂度高的例程,确定重复性,并可能进行一些类似于皮棉的静态分析,以发现可疑的(因而可能是错误的)构造。
我将如何构建这样的报告?
回答 0
为了测量圈复杂度,traceback.org提供了一个不错的工具。该页面还很好地概述了如何解释结果。
回答 1
对于圈复杂度,可以使用radon
:https : //github.com/rubik/radon
(使用pip
安装它:pip install radon
)
此外,它还具有以下功能:
- 原始指标(包括SLOC,注释行,空白行等)
- Halstead指标(所有指标)
- 可维护性指数(在Visual Studio中使用的指数)
回答 2
回答 3
当您需要了解新项目时,Pycana就像魅力一样工作!
PyCAna(Python代码分析器)是一个简单的python代码分析器的名字,它在执行代码后创建类图。
看看它是如何工作的:http : //pycana.sourceforge.net/
输出:
回答 4
感谢Pydev,您可以真正轻松地将pylint集成到Eclipse IDE中,并在每次保存修改后的文件时获得代码报告。
回答 5
使用flake8,在一个工具中提供pep8,pyflakes和循环复杂性分析
回答 6
有一个名为CloneDigger的工具 ,可以帮助您找到类似的代码片段。
回答 7
为了检查圈复杂度,当然有mccabe
包装。
安装:
$ pip install --upgrade mccabe
用法:
$ python -m mccabe --min=6 path/to/myfile.py
请注意上面的阈值6。根据这个答案,分数> 5可能应该简化。
输出示例--min=3
:
68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3
也可以通过pylint-mccabe或pytest-mccabe等使用它。