当maven-compiler-plugin:3.8.0:testCompile @ foo-child运行时,线程转储显示容易出错正在一个非常长的时间。我相信有一个容易出错的错误,但是现在我宁愿不要在单元测试上运行容易出错的错误。
我有一个父pom.xml:
<modules>
<module>foo-child</module>
</modules>
<dependencyManagement>
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
</dependency>
// also has dependency for io.norberg auto-matter and com.google.auto.value auto-value
</dependencyManagement>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
// also has annotationProcessorPaths configuration for auto-matter and auto-value
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
有什么我可以放入foo-child pom.xml中的内容,它可以让我完全排除maven-compiler-plugin:3.8.0:testCompile @ foo-child在运行之外。
我不能完全排除容易出错的原因,因为番石榴之类的其他东西都取决于它。
编辑:好像这个用户正在尝试解决相同的问题。您知道如何将那里提供的解决方案应用于我的案件吗?
我最近发现了Error Prone ,并使用其页面上链接的Gradle 插件将其集成到我的 Android 构建中。
由于我们的项目使用 Icepick(以及其他一些生成注释处理器的代码),因此我们生成了源代码,并对其进行编译。不幸的是,某些生成的代码会触发 Error Prone 中的警告,我想过滤掉该噪音不知何故。
生成的代码显示在app/build/generated/source/apt/debug目录中。我怎样才能使这段代码免遭Error Prone 严厉的目光呢?
在我最近的项目中,我遇到了编译完全正常的代码,但对任何读者来说都是非常令人惊讶的,不应该通过静态分析.
class BracketsAfterMethodSignature {
Object emptyArray()[] {
return new Object[]{};
}
}
Run Code Online (Sandbox Code Playgroud)
我们使用Checkstyle,PMD,ErrorProne和SonarLint,但这些工具都没有抱怨这样的构造.是否有可以启用的规则或可用于阻止此类代码的工具?
显然,Checkstyle的ArrayTypeStyle不包括这种情况.
我正在尝试遵守Error Prone建议的Java 样式指南。
\n第 7.2 节摘要片段说明如下:
\n\n\n每个 Javadoc 块都以一个简短的摘要片段开始。该片段非常重要:它是文本中出现在某些上下文(例如类和方法索引)中的唯一部分。
\n
\n\n这是一个片段\xe2\x80\x94名词短语或动词短语,不是一个完整的句子。它不是以 A {@code Foo} is a... 开头,或者 This method returns... ,也没有形成像 Save the record. 这样的完整祈使句。但是,该片段是大写的并带有标点符号,就好像它是一个完整的句子。
\n
这是我想知道的:
\n我已将以下内容添加到pom文件中:
<!-- Source: http://errorprone.info/docs/installation -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<compilerId>javac-with-errorprone</compilerId>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
<!-- maven-compiler-plugin defaults to targeting Java 5, but our javac
only supports >=6 -->
<source>8</source>
<target>8</target>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac-errorprone</artifactId>
<version>2.5</version>
</dependency>
<!-- override plexus-compiler-javac-errorprone's dependency on
Error Prone with the latest version -->
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>2.0.4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
在Maven全新安装期间,哪个导致:
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.NoSuchFieldError: pid
at lombok.javac.JavacAST.packageDeclaration(JavacAST.java:107)
at lombok.javac.JavacAST.<init>(JavacAST.java:81)
at …Run Code Online (Sandbox Code Playgroud) 尝试将番石榴从版本19升级到20并收到此错误:
Error:java: cannot access com.google.errorprone.annotations.CanIgnoreReturnValue
class file for com.google.errorprone.annotations.CanIgnoreReturnValue not found
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决它?我的项目中没有任何对errorprone的引用.在errorprone下面添加依赖项无济于事:
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
Run Code Online (Sandbox Code Playgroud) 我最近在Android-Studio中安装了容易出错的插件,并按照其网站上的说明配置了设置。
该插件工作正常,但我注意到在编译时,易错插件显示的任何错误已由编辑器中的Lint工具突出显示。
所以我想知道为什么我应该在Android-studio中使用容易出错的功能。或关于容易出错或Lint工具的细节我不知道。
我有一个包含大量代码的项目。其中一些代码未通过 Bazel 默认打开的容易出错的检查。我想禁用 bazel 中容易出错的功能。是否可以在不通过 WORKSPACE 文件添加命令行参数的情况下完成此操作?
PS 通过命令行禁用效果很好
Checker 框架可以与 Error Prone 一起使用吗?据我所知,它们在编译时检查方面具有重叠的目的,但它们并不做所有相同的事情。我使用 gradle,但我怀疑这两个插件是否可以同时使用(事实上有一个未解决的错误)。如果在命令行上手动执行此操作,我如何在一次javac调用中针对文件运行检查器和易出错的操作?