如何增加IntelliJ IDEA的100个错误限制?

21

我有一个IntelliJ IDEA项目,但是当编译遇到超过100个错误时就会停止,我希望能够增加这个限制,以便可以找出需要"重构"的古老代码量。


2
这是“javac”硬编码限制,你可以尝试在“设置”|“编译器”中切换到Eclipse编译器。 - CrazyCoder
4个回答

38
您所看到的100个错误限制并不是IntelliJ IDEA本身的限制,而是用于编译应用程序的javac编译器的默认值。在使用IDEA后,默认情况下会使用标准Sun/Oracle javac编译器的默认错误数,但可以通过向编译器传递参数来修改;警告的最大数量也可以通过相同的方式进行修改,其默认值也为100。
javac的在线文档(例如Java SE版本7页面'javac-Java编程语言编译器'†)在“选项”部分下的“非标准选项”子标题下给出了以下参数:
-Xmaxerrs number 设置要打印的最大错误数。
-Xmaxwarns number 设置要打印的最大警告数。
当在IntelliJ IDEA中使用javac时,这些(和其他)编译器参数可以通过导航到项目的设置(例如F̲ile > Set̲tingsCtrl+Alt+S)来添加;然后,在Project Settings标题下展开▼ Compiler部分,选择Java Compiler并将所需的设置输入到文本框中,后面跟随Additional command line parameters:。(例如,要将限制增加到123个错误和456个警告,请将-Xmaxerrs 123 -Xmaxwarns 456输入到文本框中。)

  来源于http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html,检索日期为2014-07-31,由WebCite®存档于http://www.webcitation.org/6RTlsAI8T

  此过程经由shelleybutterfly在版本13上审核,Nicolas Guillaume在版本12上审核,但对于其他版本,该过程可能非常相似,甚至相同。


1
如果“附加命令行参数”文本框似乎没有生效,您可能需要检查“每个模块覆盖编译器参数”部分下面的字段,以确保您的模块没有被其他内容覆盖。 - checketts
1
这在使用JDK 1.6 javac的IntelliJ 2022.1上不起作用,且我没有应用任何模块覆盖。 - cb4

20
如果你正在使用Gradle(可能是因为你在使用Android),请按照以下方式更改你的项目 `build.gradle` 文件(不是模块文件)中的 `allprojects` 部分:
allprojects {
    repositories {
        jcenter()
    }

    // Allow 400 errors.
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xmaxerrs" << "400"
        }
    }
}

你在 X 后面加了空格吗? - Timmmm

3

2022年更新

这个问题虽然老,但在想要在旧代码上使用当前IDE技术时仍然很重要。对于在Intellij中进行Maven构建,Nicolas Guillaume的答案将不起作用 - 这些设置被Maven正确地覆盖了。然而,这个配置将产生相同的结果:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.10.0</version>
    <configuration>
        <fork>true</fork>
        <compilerVersion>1.5</compilerVersion>
        <executable>C:\Java\jdk-1.5.0_22\bin\javac.exe</executable>
        <source>1.5</source>
        <target>1.5</target>
        <compilerArgs>
            <arg>-Xmaxerrs</arg>
            <arg>1000</arg>
            <arg>-Xmaxwarns</arg>
            <arg>2000</arg>
        </compilerArgs>
    </configuration>
</plugin>

有些来源(甚至在SO上)声称Java5的正确选项是-Xmaxerrors,这是不正确的,正如此错误报告中所述。而且该选项在1.4及更早版本中不存在。


3
注意:虽然可以按照这个答案的建议更改为Eclipse编译器,但这并不是解决此特定问题所必需的。相反,您可以简单地向编译器设置中添加一个参数,以更改javac编译器显示的最大错误数量(如Nicolas Guillaume在此问题的替代答案中所述)。
由于在现有项目中切换到不同的编译器或编译器版本可能会引起一些微妙的问题,请确保在进行像下面描述的这种切换之前,根据您的特定情况了解后果。
这个限制不是IntelliJ IDEA强制执行的,它是特定于编译器的(在这种情况下,javac编译器有100个错误的限制)。
为了解决这个问题,您可以在设置| 编译器 | Java编译器中切换到另一个编译器。 Eclipse编译器应该能够显示更多的错误信息。

2
你似乎是正确的,这是由于编译器,但尼古拉斯的解决方案通过传递-Xmaxerrors参数有效(至少在我的情况下不需要更改编译器)。 - STW
我在答案顶部添加了注释和 Nicolas Guillaume 的链接是因为一个错误的回答,像这样,以权威的口气陈述,可能会导致人们做出可能导致许多难以解决的问题的事情,尤其是在团队环境中。即使这个答案是正确的,也应该有一些警告,因为它很容易成为与问题相关的搜索结果中的排名靠前的答案,并在被跟随时导致不必要的麻烦。我觉得当我们给出这样激烈的答案时,我们欠那些可能没有经验的人一些额外的关心,所以...我给了它。❤ - shelleybutterfly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接