测量Python类凝聚性的工具。
项目描述
凝聚性
凝聚性是一个用于测量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 查看哈希值)
关闭
cohesion-1.1.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2ab1534d936428c61385e973c30cbd0381796401ad1083a5bf08562a9de9fee6 |
|
MD5 | ac0da207a6e0691c92651a877da61739 |
|
BLAKE2b-256 | 379e0ea04fb396816721cb34e507a029d25b1ae2ec63c81830b17d1b774d1997 |