是否有任何工具/ Eclipse插件可以删除文件中的所有JavaDoc注释?
运行该工具后,正常(非JavaDoc)评论应该完整。
答案 0 :(得分:32)
尝试使用此正则表达式来搜索eclipse / sed /你最喜欢的具有正则表达式支持的编辑器。
/\*\*(?s:(?!\*/).)*\*/
?s
将输入视为单行\**
*/
*/
修改强>
要解决包含javadoc的字符串的情况,请使用此正则表达式
((?<!\\)"([^"]|(?<=\\)")*")|(/\*\*(?s:(?!\*/).)*\*/)
并将其替换为第一个捕获组
/1
然后,如果你说这不匹配
///** */
或更复杂的案例
我建议使用像antlr这样的解析器工具使用java grammar for tokens like comments and strings解析并删除你不想要的元素
有时我觉得我自己的正则表达式的答案含糊不清!!
所以这是一些视觉反馈
((?!\\)"([^"]|(?=\\)")*")|(/\*\*(?:(?!\*/).)*\*/)
/\*\*(?:(?!\*/).)*\*/
答案 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