Java代码改动影响范围分析工具 您所在的位置:网站首页 cci修改 Java代码改动影响范围分析工具

Java代码改动影响范围分析工具

2024-01-05 20:35| 来源: 网络整理| 查看: 265

工具介绍

JCCI,Java代码提交影响分析,是一个纯python库,分析Java项目的两次git提交对项目的影响,并生成树形图数据。

PYPI: jcci

项目地址:jcci

背景

随着业务的日趋复杂,做全量回归也越来越困难 为了更加精确的定位后台项目改动所造成的影响,回归范围划定精确,提升测试效率 需要对 Java 代码提交影响面进行分析

调研

除了少量相关英文文献,未从 Google 文献和 github 查找相关开源成熟的技术和方案。

文献:Chianti: A Tool for Change Impact Analysis of Java Programs

通过文献,结合个人开发经验,决定自主实现,主要面临的问题是 Java 文件解析和 diff 信息解析。

经过 Google 搜索找到了 python 相关的解析库,遂决定使用 python 开发此功能。

实现

大致原理同 Idea 的 Find Usage 一致,通过代码改动定位代码影响,并不断遍历受影响的类和方法直至找到最上层的 controller 层

代码主要由 python 编写,主要涉及 2 个库:

javalang java 文件语法解析库 unidiff git diff 信息解析库

通过 javalang 语法解析获取每个 Java 文件的 import class extends implements declarators methods 等信息

通过 unidiff 解析 git diff 信息(diff file, added_line_num, removed_lin_num)

然后根据文件增删的代码行去判断影响了哪些类和方法,不断遍历受影响的类和方法直至找到最上层的 controller 层

通过传入项目 git 地址 分支 两次的 commit id,即可分析出两次 commit id 之间代码改动所带来的影响,并生成树图数据方便展示影响链路。

安装教程 pip install jcci 使用说明

新建python项目,新建python文件,代码如下:

from jcci import jcci jcci.analyze('[email protected]','master','commit_id1','commit_id2', 'username1')

运行时,会将项目克隆到目录中,然后进行分析,生成后缀格式为commit_id1...commit_id2.cci的文件,其中包含分析结果生成的树形图数据,打开jcci-result.html,选择分析结果的.cci文件,即可可通过视图显示。

CCI result

生成树形图,展示改动影响的类和方法等,如果是web项目,可以直接将接口影响汇总展示

cii-result-tree.png



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有