从Ansible脚本中提取度量的模块
ansiblemetrics的Python项目详细描述
有关完整文档,请访问radon-h2020.github.io。在
AnsibleMetrics公司
AnsibleMetrics是一个基于Python的静态源代码分析器,用于Ansible蓝图,它有助于量化基础结构代码的特性,以支持DevOps工程师在维护和改进它。 它目前支持46个源代码度量,但是其他度量可以通过组合实现的度量来派生。在
它代表着在缩小仪器软件质量差距方面向前迈进了一步,以支持DevOps工程师开发和维护基础设施代码,并为其质量开发度量模型!在
如何安装
安装由PyPI repository简化。 下载该工具并安装:
pip install ansible-metrics
或者,也可以从源代码项目目录:
pip install -r requirements.txt
pip install .
如何使用
命令行
运行ansible-metrics --help
获取有关用法的说明:
假设下面的示例名为playbook1.yml:
----hosts:webserversvars:http_port:80remote_user:roottasks:-name:ensure apache is at the latest versionyum:name:httpdstate:latest-hosts:databasesremote_user:roottasks:-name:ensure postgresql is at the latest versionyum:name:postgresqlstate:latest-name:ensure that postgresql is startedservice:name:postgresqlstate:started
位于文件夹playbooks中,如下所示:
剧本
|-playbook1.yml
|-playbook3.yml
|-playbook3.yml
另外,假设用户的工作目录是playbooks文件夹。然后,可以通过运行以下命令从该蓝图中提取源代码特征:
ansible-metrics --omit-zero-metrics playbook1.yml --dest report.json
对于本例,\textit{报表.json}会导致
{
"filepath": "playbook1.yml",
"avg_play_size": 10,
"avg_task_size": 4,
"lines_blank": 4,
"lines_code": 20,
"num_keys": 20,
"num_parameters": 6,
"num_plays": 2,
"num_tasks": 3,
"num_tokens": 50,
"num_unique_names": 3,
"num_vars": 1,
"text_entropy": 4.37
}
^{3元Python>
AnsibleMetrics目前支持多达46个源代码度量,用Python实现。 要提取给定度量的值,请遵循以下模式:
fromioimportStringIOfromansiblemetrics.<general|playbook>.<metric>import<Metric>script='a valid yaml script'value=<Metric>(StringIO(script).count()
其中,<;metric>;必须替换为所需的度量模块的名称,才能计算特定度量的值。
general和playbook模块之间的区别在于,playbook模块包含特定于剧本的度量(例如,播放和任务的数量),而general模块包含可以通用到其他语言的度量(例如,代码行)。在
例如,要计算代码行数:
fromioimportStringIOfromansiblemetrics.general.locimportLOCscript="""---- hosts: all tasks: - name: This is a task! debug: msg: "Hello World""""metric=LOC(StringIO(script))print('Lines of executable code:',metric.count())# This will result in # > Lines of executable code: 5
要一次提取46个度量的值,请导入ansiblemetrics.metrics_extractor
包并调用方法extract_all()
(在本例中,返回值将是一个json对象):
fromioimportStringIOfromansiblemetrics.metrics_extractorimportextract_allscript="""---- hosts: all tasks: - name: This is a task! debug: msg: "Hello World""""metrics=extract_all(StringIO(script))print('Lines of executable code:',metrics['lines_code'])# This will result in # > Lines of executable code: 5
如何作出贡献
克隆为第一个存储库:
git clone https://github.com/radon-h2020/radon-ansible-metrics.git
然后,移动到文件夹位置并运行
pip install -r requirements.txt
安装依赖项。在
执行pytest
以运行测试套件。在
步骤1:创建一个新分支来处理度量
创建一个分支来实现(或更新)和测试给定的度量。在
移到项目文件夹并运行以下命令:
git checkout master
移动到分支master
git pull
确保使用最新版本进行更新git checkout -b <metric_name>
创建并移动到新的工作分支。在
步骤2:文档度量
首先,在docs文件夹中记录新指标的预期行为和示例。在
用度量名称命名文档文件,并按照现有度量中的格式对其进行描述。在
步骤3:创建测试用例
在tests文件夹中创建一个测试用例,并将其命名为tests\<;metric>_count.py。在
步骤4:实现度量
最后,在文件夹ansiblemetrics/<general|playbook>中创建实现度量的脚本。在
定义使用空实体进行测试的方法。在
运行pytest
以确保测试用例在步骤3失败。在
实现方法的主体。在
再次运行pytest
,以确保测试用例在步骤3^{str1}$pass
中实现。在第4步:提交您的工作
pytest
以确保测试用例在步骤3失败。在pytest
,以确保测试用例在步骤3^{str1}$pass移到项目文件夹并运行以下命令:
- 在
在git add <modified_file>
对于每个修改过的文件,git add .
添加所有修改过的文件(使用此选项时请注意添加正确的文件) - 在
在git status
有助于检查哪些文件已被更改/添加/删除 - 在
准备好后,运行
在git commit -m "A message describing the work done"
- 在
{19>如果你的请求改变,你的分支将被打开
在
变更日志
有关发布历史记录的信息,请参阅CHANGELOG
- 项目
标签: