Skip to content

nerds-odd-e/ai_generated_content_test

Repository files navigation

代码与文档分析工具集

项目简介

本项目包含一系列 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 测试覆盖率报告,并查询指定类中特定方法的详细覆盖率数据(指令、分支、行等)。

环境配置

  1. 确保您已安装 Python 3.x。

  2. 克隆本项目仓库到本地。

  3. 在项目根目录下,使用 pip 安装所需的依赖库:

    pip install -r requirements.txt

使用方法

以下是每个脚本的详细使用说明。请在项目根目录下执行这些命令。

1. 比较 Java 测试 (compare_java_tests.py)

计算两个 Java 单元测试文件的整体语义相似度。

python compare_java_tests.py <文件A.java> <文件B.java>
  • <文件A.java>: 第一个 Java 测试文件的路径。
  • <文件B.java>: 第二个 Java 测试文件的路径。

2. 分析 Markdown 内容包含性 (compare_md_containment.py)

计算文件 B 包含了文件 A 中内容的百分比。

python compare_md_containment.py <文件A路径> <文件B路径> [-n N]
  • <文件A路径>: 基础文件,我们要检查此文件的内容。
  • <文件B路径>: 比较文件,我们在此文件中寻找文件 A 的内容。
  • [-n N] (可选): 用于比较的 N-gram 大小(块包含的词数)。默认为 3。

3. 计算 Markdown 相似度 (compare_md_sim.py)

使用 AI 模型计算两个 Markdown 文件的语义相似度。

python compare_md_sim.py <文件1路径> <文件2路径>

4. 分析语义包含性 (compare_semantic_containment.py)

计算文件 B 在语义上包含了文件 A 多少内容,并列出未包含的句子。

python compare_semantic_containment.py <文件A路径> <文件B路径> [-t THRESHOLD]
  • <文件A路径>: 基础文件,我们要检查此文件的思想/句子。
  • <文件B路径>: 比较文件,我们在此文件中寻找文件 A 的思想。
  • [-t THRESHOLD] (可选): 匹配阈值 (0.0 到 1.0)。默认为 0.7。

5. 查询 JaCoCo 方法覆盖率 (get_methed_coverage.py)

从 JaCoCo XML 报告中提取特定方法的覆盖率。

python get_methed_coverage.py <XML报告路径> <方法名> [类名]
  • <XML报告路径>: JaCoCo 生成的 jacoco.xml 文件的路径。
  • <方法名>: 要查询的函数/方法名 (例如 getUserProfile)。
  • [类名] (可选): 用于过滤的部分类名 (例如 UserService),以在多个类包含同名方法时缩小范围。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages