如何修复未注释的主要方法?

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 
    ...

【讨论】:

以上是关于如何修复未注释的主要方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 VueJS 中的“未定义属性或方法”错误

如何修复未定义的方法“find_by_friendly_id”

如何修复抛出的未处理异常

如何在颤振发布方法中修复“未处理的异常:用于空值的空检查运算符”

修复未关闭的 HTML 标签

如何修复 linter 警告“未检查错误返回值”?