如何分析Python代码,以确定问题的地方?(How can I analyze Python co

2019-06-23 10:29发布

我已经在多个项目的大型源代码库分裂。 我想产生一个报告关于源代码的健康状况,确定需要解决的问题领域。

具体来说,我想请出程序具有高圈复杂度,找出重复,也许运行一些皮棉般的静态分析发现可疑的(因此可能错误的)结构。

我怎么可能会去构建这样的报告?

Answer 1:

为了测量圈复杂度,有在提供一个很好的工具traceback.org 。 该页面还提供了如何解释这些结果的一个很好的概述。

+1 pylint的 。 正是在核实遵守编码标准大(无论是PEP8或自己组织的变体),它可以帮到底,以减少圈复杂度。



Answer 2:

对于圈复杂度,你可以使用radon : https://github.com/rubik/radon

(使用pip进行安装: pip install radon

此外它还具有下列特征:

  • 原始指标(这些包括SLOC,注释行,空行,& C)。
  • 霍尔斯特德指标(所有的)
  • 可维护性指数(一个在Visual Studio中使用)


Answer 3:

对于静态分析有pylint的和pychecker 。 我个人使用pylint的,因为它似乎比pychecker更加全面。

对于圈复杂度,你可以试试这个perl程序 ,或该文章 ,介绍Python程序做同样的



Answer 4:

Pycana作品般的魅力,当你需要了解一个新的项目!

PyCAna (Python代码分析器)是一个简单的代码分析器为Python是,执行你的代码后,创建一个类图一个奇特的名字。

看看它是如何工作的: http://pycana.sourceforge.net/

输出:

替代文字http://pycana.sourceforge.net/relations.png



Answer 5:

由于Pydev的 ,可以整合pylint的在Eclipse IDE中确实容易,每次保存修改的文件得到一个代码报告。



Answer 6:

使用flake8 ,它提供PEP8,pyflakes和圈复杂度分析在一个工具



Answer 7:

有一个名为工具CloneDigger ,可以帮助您找到类似的代码片段。



Answer 8:

对于检查圈复杂度,当然还有的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-麦凯布等



文章来源: How can I analyze Python code to identify problematic areas?