当前位置: 首页 > ds >正文

java 代码查重(四)删除java文件中注释的方法后查重实现

目录

一、删除Java代码注释降低查重影响

二、删除Java代码注释实现

✔️思路1: 使用Java中现有工具类JavaParser删除注释

✔️思路2:按文本文件过滤来删除Java代码中的注释

三、对Java代码查重整体实现


一、删除Java代码注释降低查重影响

        对Java代码查重中,需要避免注释代码对查重的影响。因此需要去掉Java代码中单行注释、多行注释。去掉Java代码中注释的方法思路分析。

二、删除Java代码注释实现

        删除注释过程中,可以假设Java代码在源文件.java文件中、 在如.txt文本文件中

✔️思路1: 使用Java中现有工具类JavaParser删除注释

使用前提: Java代码保存在.java文件中(源代码文件)

具体步骤如下:

步骤1: 使用javaparser读取.java文件具体内容

步骤2:使用javaparser类方法 解析.java文件内容并删除注释

核心代码如下:

import com.github.javaparser.JavaParser;
import com.github.javaparser.ParseResult;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.printer.PrettyPrinter;
import com.github.javaparser.utils.SourceRoot;
import com.github.javaparser.printer.configuration.DefaultPrinterConfiguration;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;public static String remoreComments(String FILE_PATH) throws IOException {JavaParser parser = new JavaParser();ParseResult<CompilationUnit> cu = parser.parse(new File(FILE_PATH));cu.getCommentsCollection().get().getComments().forEach(comment -> comment.remove()); // 移除所有注释节点/*** cu.toString() 返回 Parsing successful* cu.getResult().get() 返回源代码*/
//        System.out.println("去除注释后: "+ cu.getResult().get().toString());//返回删除注释后的代码(String形式)return cu.getResult().get().toString();}

✔️思路2:按文本文件过滤来删除Java代码中的注释

使用前提: Java代码保存在.txt文件中(文本文件)

具体步骤如下:

步骤1: 使用Files类读取.txt文件具体内容并转换成字符串String

步骤2:使用正则表达式方式将txt文件内容删除,即针对字符串删除其中以//、/** **/ 的字符。

核心代码如下(只实现了删除单行注释):

        List<String> lines = Files.readAllLines(Paths.get(filePath));content = String.join("\n", lines);
//                // 移除单行注释content = content.replaceAll("//.*", "");

注意: 删除多行注释时,可能存在问题或不准确导致得到的字符串为空,这里可以只移除单行注释,允许多行注释带来的误差。

三、对Java代码查重整体实现

http://www.xdnf.cn/news/8757.html

相关文章:

  • 鼠标连点器 ,实现鼠标自动点击
  • DVWA通关笔记-靶场安装教程
  • SQL每日一题(5)
  • 阿斯利康医学代表在线测评笔试题库 | 3天备考、能力测评、性格测评历年真题 | 华东同舟求职讲求职
  • 分布式缓存:缓存设计中的 7 大经典问题_缓存失效、缓存穿透、缓存雪崩
  • RV1126+FFMPEG多路码流监控项目大体讲解
  • 【软件测试】第三章·软件测试基本方法(缺陷模式、模型、形式化测试方法)
  • 关键点翻转 数据增强踩坑
  • C++性能相关的部分内容
  • 数据类型与运算符
  • 6.3.1图的广度优先遍历
  • 第一课:医学影像研究的科学思维与问题提出
  • js实现音频的录制
  • Vue 样式不一致问题全面分析与解决方案
  • 专业学习|经济学与管理学常用分析工具详解
  • 【人工智能】微调秘籍:解锁AI大模型的定制化魔法
  • python装饰器的简单理解
  • (2)-玩转Fiddler抓包-再识Fiddler
  • 天地图实景三维数据分享(江苏)
  • 【iOS】内存分区
  • 第2周 PINN核心技术揭秘: 如何用神经网络求解偏微分方程
  • 消息中间件之kafka
  • WSL 下面 Buildroot + QEMU 环境记录一下
  • [特殊字符] 使用增量同步+MQ机制将用户数据同步到Elasticsearch
  • Linux(6)——第一个小程序(进度条)
  • LeetCode 2942.查找包含给定字符的单词:使用库函数完成
  • 台式机安装新的固态硬盘后无显示
  • 【C语言练习】060. 使用指针操作字符串
  • Kotlin全栈工程师转型路径
  • Vue-创建应用/挂载应用/根组件模版-.vue单文件/应用配置