删除JavaDoc注释的工具?

时间:2012-01-31 11:11:48

标签: java eclipse javadoc

是否有任何工具/ Eclipse插件可以删除文件中的所有JavaDoc注释?

运行该工具后,正常(非JavaDoc)评论应该完整

4 个答案:

答案 0 :(得分:32)

尝试使用此正则表达式来搜索eclipse / sed /你最喜欢的具有正则表达式支持的编辑器。

/\*\*(?s:(?!\*/).)*\*/
  • ?s将输入视为单行
  • 起始字符串\**
  • 零或更多
    • */
    • 的否定预测
    • 空格或非空格字符
  • 尾随字符串*/

修改

要解决包含javadoc的字符串的情况,请使用此正则表达式

((?<!\\)"([^"]|(?<=\\)")*")|(/\*\*(?s:(?!\*/).)*\*/)

并将其替换为第一个捕获组

/1

然后,如果你说这不匹配

///** */

或更复杂的案例

我建议使用像antlr这样的解析器工具使用java grammar for tokens like comments and strings解析并删除你不想要的元素


有时我觉得我自己的正则表达式的答案含糊不清!!

所以这是一些视觉反馈

((?!\\)"([^"]|(?=\\)")*")|(/\*\*(?:(?!\*/).)*\*/)

Regular expression visualization

Debuggex Demo


/\*\*(?:(?!\*/).)*\*/

Regular expression visualization

Debuggex Demo

答案 1 :(得分:1)

我为此创建了一个开源library,它名为CommentRemover,你可以删除单行和多行Java注释。

它支持删除或不删除TODO 它也支持JavaScript,HTML,CSS,属性,JSP和XML注释。

小代码片段如何使用它(有2种类型用法):

第一种方式是InternalPath

JsonObject

第二种方式ExternalPath

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

 // root dir is: /Users/user/Projects/MyProject
 // example for startInternalPath

 CommentRemover commentRemover = new CommentRemover.CommentRemoverBuilder()
        .removeJava(true) // Remove Java file Comments....
        .removeJavaScript(true) // Remove JavaScript file Comments....
        .removeJSP(true) // etc.. goes like that
        .removeTodos(false) //  Do Not Touch Todos (leave them alone)
        .removeSingleLines(true) // Remove single line type comments
        .removeMultiLines(true) // Remove multiple type comments
        .startInternalPath("src.main.app") // Starts from {rootDir}/src/main/app , leave it empty string when you want to start from root dir
        .setExcludePackages(new String[]{"src.main.java.app.pattern"}) // Refers to {rootDir}/src/main/java/app/pattern and skips this directory
        .build();

 CommentProcessor commentProcessor = new CommentProcessor(commentRemover);
                  commentProcessor.start();        
  }

答案 2 :(得分:1)

Prashant Bhate的答案在日食中并不适合我:

/\*\*(?s:(?!\*/).)*\*/

我必须使用

/\*/*(?s:(?!\*/).)*\*/

代替。

答案 3 :(得分:0)

以下内容适用于vim:

/\/\*\*\_.\{-}\*\/

\_.\{-}模式匹配任何字符(.),包括新行(\_),尽可能少(\{-})。

这与多行Javadoc注释匹配,例如:

/**
 * My Javadoc comment here
 */

但不会与以下评论相符:

// My non-Javadoc comment