去掉java文件中的注释_利用JavaParser去除java文件中的注释

利用JavaParser去除java文件中的注释

个人博客:记录一下在项目实施过程中的一些点

情景回顾

之前项目有个需求,就是去掉.java文件中的所有注释,常用的方法是用正则匹配。然而在网络上查找到的正则或多或少都有一些问题,无法匹配到所有的情况。或者说,由于写.java文件的人的不规范(各种奇葩的问题),导致正则覆盖不全。所以正则方法不靠谱,或者说,存在一定的限制。

新的想法

后来想到利用AST来去除注释,这种方法应该是“完备”的,也就是说,不会受到程序员不同注释风格的影响,能稳定地去除注释。因为在AST中,代码的不同元素映射成不同节点,删除注释对应的节点就能去掉代码中的注释。

寻找工具

考虑到AST树,那么直接考虑到使用JavaParser(https://github.com/javaparser/javaparser)

并且直接找到了JavaParser作者写的一个实例 CommentRemover:

package org.javaparser.samples;

import com.github.javaparser.JavaParser;

import com.github.javaparser.ast.CompilationUnit;

import com.github.javaparser.ast.Node;

import com.github.javaparser.ast.comments.Comment;

import com.github.javaparser.ast.comments.LineComment;

import java.io.File;

import java.util.List;

import java.util.stream.Collectors;

public class CommentRemover {

private static final String FILE_PATH = "src/main/java/org/javaparser/samples/ReversePolishNotation.java";

public static void main(String[] args) throws Exception {

CompilationUnit cu = JavaParser.parse(new File(FILE_PATH));

Listcomments = cu.getAllContainedComments();

ListunwantedComments = comments

.stream()

.filter(p -> !p.getCommentedNode().isPresent() || p instanceof LineComment)

.collect(Collectors.toList());

unwantedComments.forEach(Node::remove);

System.out.println(cu.toString());

}

}

以上代码转自:https://github.com/javaparser/javaparser-visited/blob/master/src/main/java/org/javaparser/samples/CommentRemover.java

利用JavaParser就能很好的去除java文件中的注释。

一些资源

JavaParser官方Github:https://github.com/javaparser/javaparser

JavaParser说明文档:http://www.javadoc.io/doc/com.github.javaparser/javaparser-core/3.8.1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值