跳转到主要内容

测量Python类凝聚性的工具。

项目描述

凝聚性

Python Versions PyPI Version

凝聚性是一个用于测量Python类凝聚性的工具。

在计算机编程中,凝聚性指的是模块中元素相互依赖的程度。因此,凝聚性衡量了给定模块中功能块之间关系的强度。例如,在高度凝聚的系统中的功能是高度相关的。

当凝聚性高时,意味着类的 方法和变量是相互依赖的,并且作为一个逻辑整体在一起。

  • 《代码整洁之道》第140页

高凝聚性的某些优势,也来自维基百科

  • 降低模块复杂性(它们更简单,操作更少)。
  • 提高系统可维护性,因为域中的逻辑变化影响较少的模块,并且因为一个模块的变化需要其他模块中的较少变化。
  • 提高模块可重用性,因为应用开发者将更容易在模块提供的凝聚操作集中找到他们需要的组件。

安装

$ python -m pip install cohesion
$ cohesion -h

$ git clone https://github.com/mschwager/cohesion.git
$ cd cohesion
$ PYTHONPATH=lib/ python -m cohesion -h

使用

凝聚性衡量该类及其实例变量在该类方法中的使用情况。

$ cat example.py
class ExampleClass1(object):
    class_variable1 = 5
    class_variable2 = 6

    def func1(self):
        self.instance_variable = 6

        def inner_func(b):
            return b + 5

        local_variable = self.class_variable1

        return local_variable

    def func2(self):
        print(self.class_variable2)

    @staticmethod
    def func3(variable):
        return variable + 7

class ExampleClass2(object):
    def func1(self):
        self.instance_variable1 = 7
$ cohesion --files example.py --verbose
File: example.py
  Class: ExampleClass1 (1:0)
    Function: func1 2/3 66.67%
      Variable: class_variable1 True
      Variable: class_variable2 False
      Variable: instance_variable True
    Function: func2 1/3 33.33%
      Variable: class_variable1 False
      Variable: class_variable2 True
      Variable: instance_variable False
    Function: func3 0/3 0.00%
      Variable: class_variable1 False
      Variable: class_variable2 False
      Variable: instance_variable False
    Total: 33.33%
  Class: ExampleClass2 (23:0)
    Function: func1 1/1 100.00%
      Variable: instance_variable1 True
    Total: 100.00%

可以使用 --below--above 标志分别指定只显示凝聚性值低于或高于指定百分比的类。

Flake8 支持

凝聚性支持通过 flake8 运行。首先,确保您的安装已注册 凝聚性

$ flake8 --version
3.2.1 (pyflakes: 1.0.0, cohesion: 0.8.0, pycodestyle: 2.2.0, mccabe: 0.5.3) CPython 2.7.12 on Linux

现在使用 flake8 检查您的文件

$ flake8 example.py
example.py:1:1: H601 class has low cohesion

Python 版本

如果您想同时运行Python 2和Python 3代码上的Cohesion,那么您需要为这两个版本都安装它。即:

$ python2 -m pip install cohesion
$ python3 -m pip install cohesion

然后使用相应的版本来运行模块

$ python2 -m cohesion --files python2_file.py
$ python3 -m cohesion --files python3_file.py

开发

首先,安装开发包

$ python -m pip install -r requirements-dev.txt

测试

$ pytest

代码检查

$ flake8

覆盖率

$ pytest --cov

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分发

本发布版本没有可用的源代码分发文件。请参阅生成分发存档的教程。

构建分发

cohesion-1.1.0-py2.py3-none-any.whl (20.8 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持