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代码查重整体实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多则惑少则明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值