如何使用 ant 检查 Java 源代码中的标签(TODO:等)
Posted
技术标签:
【中文标题】如何使用 ant 检查 Java 源代码中的标签(TODO:等)【英文标题】:How to use ant to check for tags (TODO: etc) in java source 【发布时间】:2010-12-10 19:51:00 【问题描述】:在代码中经常看到这样的东西,希望只在开发过程中:
//XXX: not in production!
String password = "hello"; // getActualPassword(...);
...
catch(Exception e) /* TODO: Auto-generated catch block*/
我希望 ant 能够 a) 警告(在 TODO: / FIXME: 标签上)或失败(在 XXX: 或类似标签上) 构建服务器是 linux,自制并基于 ant。如果不在 Windows 上,至少需要在 linux 上工作。
如果替代方法是阻止文件提交,我们也会使用 perforce。 我们也使用 eclipse,但我不认为你可以让它成为一个致命的错误。 (是的,有任务视图,但是我希望能够将某些标签提升为构建破坏者)
【问题讨论】:
【参考方案1】:也许你可以使用Checkstyle。 我认为有一个 TODO cmets 的检查,并且 checkstyle 可以作为 Ant 任务运行,这样你就可以实现你想要的。
【讨论】:
+1 好电话。我想到了 findbugs,因为它可以找到空的 catch 块示例,但不能找到其他示例。谢谢。【参考方案2】:您可以使用 ant 条件进行这些检查:
<condition property="isSourceFileOK">
<not>
<isfileselected file="$source">
<contains text="TODO" casesensitive="yes"/>
</isfileselected>
</not>
</condition>
<fail unless="isSourceFileOK" message="Source contains TODO!" />
【讨论】:
【参考方案3】:首先,jassuncao 是正确的;根据文档here,Checkstyle 可以满足您的要求。冒着招致“不要重新发明***”的愤怒的风险,我还可能建议你想要完成的事情对于想要学习如何编写 Ant 任务的人来说是一个很好的问题。
【讨论】:
【参考方案4】:对于 Perforce 变体,您可能希望为此编写一个触发器。请参阅the perforce docu about triggers 了解更多信息。在您的情况下,您将编写一个“更改内容”触发器,以便在文件提交之前查看 Perforce 服务器上的文件内容。
在触发器中,您可以使用 p4 files //depot/...@4711
获取更改文件的列表(在本例中为 4711,但在命令行上移交给触发器。对于您将使用的每个文件 @987654323 @ 获取文件的内容并扫描您的关键字(TODO/XXX)。如果是 TODO,您可以在 stdout 上打印警告并以代码 0 退出,以便提交成功并在这种情况下以代码 1 退出XXX 以使提交失败。
【讨论】:
【参考方案5】:您也可以使用Ant TODO 任务。
【讨论】:
以上是关于如何使用 ant 检查 Java 源代码中的标签(TODO:等)的主要内容,如果未能解决你的问题,请参考以下文章
在 Eclipse 中使用 ANT 脚本时如何调试 Java 代码
Jenkins系列——使用checkstyle进行代码规范检查升级版