2009-10-28 41 views
5

它经常可以看到在代码中这样的事情,希望只在开发过程:如何使用Ant来检查标签:Java源(TODO等)

//XXX: not in production! 
String password = "hello"; // getActualPassword(...); 
... 
catch(Exception e) { /* TODO: Auto-generated catch block*/ } 

我想蚂蚁能够将)警告(在TODO:/ FIXME:标签上)或者失败(在XXX上:或者类似)
构建服务器是linux,在家种植并基于ant。如果不是在Windows上,至少需要在Linux上工作。

如果替代方法是阻止文件提交,我们也使用perforce。
我们也使用eclipse,但我不认为你可以让它成为一个致命的错误。 (是的,这里有任务视图,但是我希望能够将某些标签提升到构建破坏者)

回答

6

也许你可以使用Checkstyle。 我认为有对TODO评论的检查,并且checkstyle可以作为Ant任务运行,这样你就可以实现你想要的。

+0

+1良好的通话。我认为FindBugs的,因为它可以找到空catch块的例子,但不是其他。谢谢。 – 2009-10-28 11:31:06

+0

http://checkstyle.sourceforge.net/config_misc.html#TodoComment – 2009-10-28 11:40:58

5

您可以使用ant条件,这些检查:

<condition property="isSourceFileOK"> 
    <not> 
     <isfileselected file="${source}"> 
      <contains text="TODO" casesensitive="yes"/> 
     </isfileselected> 
    </not> 
</condition> 
<fail unless="isSourceFileOK" message="Source contains TODO!" /> 
2

首先,jassuncao是正确的;根据文档hereCheckstyle做了你所要求的。如果冒着“不要重蹈覆辙”的愤怒,我也可能会建议你想要完成的任务对于想要学习如何编写Ant任务的人来说是一个很好的问题。

3

至于Perforce的变种,你可能会想写一个触发器。有关更多信息,请参阅the perforce docu about triggers。在你的情况下,你会写一个'change-content'触发器,以便在文件提交之前查看Perforce服务器上的文件内容。

在可以使用p4 files //depot/[email protected]得到改变的文件列表(在这种情况下,4711的触发,但是被移交命令行来触发的。对于每一个文件,你会使用p4 print -q //depot/path/to/[email protected]获得文件的内容并扫描你的关键字(TODO/XXX),如果是TODO,你可以在stdout上打印一个警告,并用代码0退出,这样提交成功并在XXX的情况下用代码1退出即提交失败。