本项目包含一系列 Python 脚本,用于对软件项目中的代码和文档进行分析、比较和评估。主要功能包括:比较 Java 测试代码的相似性、分析 Markdown 文档的包含关系和相似度、基于语义分析文档内容,以及计算 Java 项目的方法级测试覆盖率。
- Java 测试比较 (
compare_java_tests.py): 提取并比较两个 Java 测试文件 的整体语义相似度。 - Markdown 内容包含性分析 (
compare_md_containment.py): 基于 N-gram 分析,检查文件 B 中包含了文件 A 多少百分比的内容。 - Markdown 相似度计算 (
compare_md_sim.py): 使用 AI 模型计算两个 Markdown 文件内容的语义相似度得分。 - 语义包含性分析 (
compare_semantic_containment.py): 利用 Transformer 模型,判断文件 A 的思想/句子是否在文件 B 中被(通过转述)提及,并列出未被包含的句子。 - JaCoCo 方法覆盖率查询 (
get_methed_coverage.py): 解析 JaCoCo XML 测试覆盖率报告,并查询指定类中特定方法的详细覆盖率数据(指令、分支、行等)。
-
确保您已安装 Python 3.x。
-
克隆本项目仓库到本地。
-
在项目根目录下,使用 pip 安装所需的依赖库:
pip install -r requirements.txt
以下是每个脚本的详细使用说明。请在项目根目录下执行这些命令。
计算两个 Java 单元测试文件的整体语义相似度。
python compare_java_tests.py <文件A.java> <文件B.java><文件A.java>: 第一个 Java 测试文件的路径。<文件B.java>: 第二个 Java 测试文件的路径。
计算文件 B 包含了文件 A 中内容的百分比。
python compare_md_containment.py <文件A路径> <文件B路径> [-n N]<文件A路径>: 基础文件,我们要检查此文件的内容。<文件B路径>: 比较文件,我们在此文件中寻找文件 A 的内容。[-n N](可选): 用于比较的 N-gram 大小(块包含的词数)。默认为 3。
使用 AI 模型计算两个 Markdown 文件的语义相似度。
python compare_md_sim.py <文件1路径> <文件2路径>计算文件 B 在语义上包含了文件 A 多少内容,并列出未包含的句子。
python compare_semantic_containment.py <文件A路径> <文件B路径> [-t THRESHOLD]<文件A路径>: 基础文件,我们要检查此文件的思想/句子。<文件B路径>: 比较文件,我们在此文件中寻找文件 A 的思想。[-t THRESHOLD](可选): 匹配阈值 (0.0 到 1.0)。默认为 0.7。
从 JaCoCo XML 报告中提取特定方法的覆盖率。
python get_methed_coverage.py <XML报告路径> <方法名> [类名]<XML报告路径>: JaCoCo 生成的jacoco.xml文件的路径。<方法名>: 要查询的函数/方法名 (例如getUserProfile)。[类名](可选): 用于过滤的部分类名 (例如UserService),以在多个类包含同名方法时缩小范围。