如何修复未注释的主要方法?
Posted
技术标签:
【中文标题】如何修复未注释的主要方法?【英文标题】:How to fix an Uncommented main method? 【发布时间】:2015-01-26 03:44:53 【问题描述】:我一直在通过谷歌寻找这个问题,但事实证明我找不到解决这个问题的方法。实际上,我有一个经典的 main
方法来运行作业,但 sonarqube 不断重复我,发现了一个未注释的主要方法。
代码如下:
/**
* Main : Run MapReduce job
*
* @param args
* arguments
*/
public static void main(String[] args)
ExitManager exitManager = new ExitManager();
// run job
if (!runJob(args))
exitManager.exit(1);
我在这里没有看到任何特别的问题,那么这个问题是从哪里来的呢?你知道我该如何解决这个问题吗?
谢谢。
【问题讨论】:
这个主要方法是未注释的。我没有发现任何问题。 没看懂,那里怎么没注释? 阅读下面的答案,似乎是对“评论”一词的简单误解。像 OP 一样,我认为它的意思是该方法应该有一个注释,而不是它应该被注释掉以便它无法执行 @Stewart 所以你的意思是我应该在 main 方法上添加特定的 cmets 而不是注释掉它? 不,CheckStyle 警报是说您根本不应该有main()
方法。显然,此警告不适用于您。
【参考方案1】:
未注释的主方法 是一个 CheckStyle 警告,指出 main()
方法没有被注释掉。你的代码中不应该有调试/测试main()
方法。
您可以使用以下方式排除您的程序入口点类:
<module name="UncommentedMain">
<property name="excludedClasses" value="\.Main$"/>
</module>
另见http://checkstyle.sourceforge.net/config_misc.html#UncommentedMain
【讨论】:
所以你的意思是我应该评论所有的主要方法,所以它不能被执行? 这取决于,有问题的 main() 是程序入口点还是调试方法?如果它是入口点,那么您可以将其从检查中排除,请参阅我的更新。 我明白了。你把这些线放在哪里?你用的是 ant 文件还是什么? @hacks4life 您通常在您的*checks.xml
文件中设置这些。对于 SonarQube,我相信您可以在“设置 -> Java -> Checkstyle”的 sonar.checkstyle.filters 配置中设置它们
...或者如果这条规则真的让您感到困扰,您甚至可以从您的质量配置文件中禁用它。【参考方案2】:
来自documentation:
检查未注释的 main() 方法。
基本原理:
main()
方法通常用于调试目的。调试完成后, 开发人员经常忘记删除该方法,这会更改 API 并增加 生成的类或 JAR 文件。除了真正的程序入口点,所有main()
方法应该从源代码中删除或注释掉。
【讨论】:
如果我的程序真的是一个入口点并且我仍然有这个警告怎么办? :)【参考方案3】:您可以使用@SuppressWarnings 抑制警告:
@SuppressWarnings("uncommentedmain")
public class YourClass
...
【讨论】:
以上是关于如何修复未注释的主要方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何修复未定义的方法“find_by_friendly_id”