我已经在多个项目的大型源代码库分裂。 我想产生一个报告关于源代码的健康状况,确定需要解决的问题领域。
具体来说,我想请出程序具有高圈复杂度,找出重复,也许运行一些皮棉般的静态分析发现可疑的(因此可能错误的)结构。
我怎么可能会去构建这样的报告?
我已经在多个项目的大型源代码库分裂。 我想产生一个报告关于源代码的健康状况,确定需要解决的问题领域。
具体来说,我想请出程序具有高圈复杂度,找出重复,也许运行一些皮棉般的静态分析发现可疑的(因此可能错误的)结构。
我怎么可能会去构建这样的报告?
为了测量圈复杂度,有在提供一个很好的工具traceback.org 。 该页面还提供了如何解释这些结果的一个很好的概述。
+1 pylint的 。 正是在核实遵守编码标准大(无论是PEP8或自己组织的变体),它可以帮到底,以减少圈复杂度。
对于圈复杂度,你可以使用radon
: https://github.com/rubik/radon
(使用pip
进行安装: pip install radon
)
此外它还具有下列特征:
对于静态分析有pylint的和pychecker 。 我个人使用pylint的,因为它似乎比pychecker更加全面。
对于圈复杂度,你可以试试这个perl程序 ,或该文章 ,介绍Python程序做同样的
Pycana作品般的魅力,当你需要了解一个新的项目!
PyCAna (Python代码分析器)是一个简单的代码分析器为Python是,执行你的代码后,创建一个类图一个奇特的名字。
看看它是如何工作的: http://pycana.sourceforge.net/
输出:
替代文字http://pycana.sourceforge.net/relations.png
由于Pydev的 ,可以整合pylint的在Eclipse IDE中确实容易,每次保存修改的文件得到一个代码报告。
使用flake8 ,它提供PEP8,pyflakes和圈复杂度分析在一个工具
有一个名为工具CloneDigger ,可以帮助您找到类似的代码片段。
对于检查圈复杂度,当然还有的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的-麦凯布或pytest-麦凯布等