如何使用 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:等)的主要内容,如果未能解决你的问题,请参考以下文章

Java的Ant文件是啥?如何创建?

在 Eclipse 中使用 ANT 脚本时如何调试 Java 代码

Jenkins系列——使用checkstyle进行代码规范检查升级版

java如何打包

如何在</Underline>标签后检查换行符(&#10)并需要替换为xslt代码中的<br/>标签

如何修改Java 9的ANT build.xml中的xjc块?