- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我开发了一个 Java 库,用于基于 JDK5 的应用程序。用于构建应用程序的工具需要 JDK7 或更高版本。我使用版本 8 更新 45:
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
分析后,我收到了很多关于实现接口(interface)规范的方法的误报,例如:
public interface FileScanner {
Collection<File> getFiles(File directory, String[] includes, String[] excludes);
}
(查看完整来源:https://github.com/gabrysbiz/maven-plugin-utils)
我发现该规则根据字节码做出决定(参见 Jira ticket)。我的类(class)主要版本等于 49,这与 JDK5 有关(参见 major version numbers )
$ javap -verbose AntFileScanner.class
Classfile /D:/Projects/maven-plugin-utils/sources/plugin-utils/target/classes/biz/gabrys/maven/plugin/util/io/AntFileScanner.class
Last modified 2015-07-16; size 1881 bytes
MD5 checksum 7ea340377469b44df88d5936c2ff4134
Compiled from "AntFileScanner.java"
class biz.gabrys.maven.plugin.util.io.AntFileScanner implements biz.gabrys.maven.plugin.util.io.FileScanner
minor version: 0
major version: 49
flags: ACC_SUPER
我使用 Jenkins 运行分析1.619 与 SonarQube Plugin 2.2.1.我用 SonarQube 5.1.1 与 Java Plugin 3.4.
我该如何纠正它?
最佳答案
其他人也有同样的问题,您可以在链接中看到:
http://blog.gmane.org/gmane.comp.java.sonar.general/page=91
我尝试按照建议使用“sonar.java.source”和“sonar.java.target”来解决:
http://docs.sonarqube.org/display/SONAR/Features+details
但我认为它现在只适用于 PMD 插件:
http://docs.sonarqube.org/display/PLUG/PMD+Plugin
然后,我看到了 JIRA 票证。因此,实际上在这种情况下存在错误。 JIRA CR 关闭了,但问题仍然出现在 Java 5 上: https://jira.sonarsource.com/browse/SONARJAVA-249
“事实上,我们现在无法实现此规则。@Override 注释具有源代码保留并被编译器删除。所以我们检测它的唯一机会是来自 AST。但是,我们目前只能从字节码中检测出一个方法是否真的覆盖了另一个方法。因此,此规则取决于可从检查中获得的符号表。”
有一个新的 Unresolved CR 来解决这个问题,https://jira.sonarsource.com/browse/SONARJAVA-818 .
修复后,它将使用我之前说过的属性“sonar.java.source”。
因此,要在修复程序尚未准备好时解决此问题,我们有两个选择:
1) 在服务器上将其标记为“误报”; 2) 使用规则引用 (S1161) 使用“@SuppressWarnings”注释:
http://docs.sonarqube.org/display/PLUG/Java+FAQ
在这种情况下,您的代码将是:
public class FileScannerImpl implements FileScanner {
@SuppressWarnings("squid:S1161")
Collection<File> getFiles(File directory, String[] includes, String[] excludes) {
[...]
}
}
关于java - 如何为鱿鱼 :S1161 rule: "@Override" annotation should be used on any method 强制执行正确的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31460783/
我的问题是 this one. 的一个分支 我有一个要验证的注释(比如电话注释)。我可以使用@phone 验证器来检查电话对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有一种方
我的问题是 this one. 的一个分支 我有一个要验证的注释(比如电话注释)。我可以使用@phone 验证器来检查电话对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有一种方
例如 class LoggingService [Inject] (protected val logger: Logger) class LoggingService @Inject (protec
你觉得你是java高手吗? 您是否深谙反射 API 的 secret ? public @interface @a {} public @interface @b {} @Mark public @i
我对 Spring 和 JUnit 非常陌生。我正在尝试为 spring 服务类运行一个简单的 JUnit 测试用例,但它失败了,我得到了这个异常。我还没有编写任何测试,但在实现之前尝试运行。使用to
对于spring和JUnit来说是非常新的东西。 我正在尝试为spring服务类运行一个简单的JUnit测试用例,但是失败了,并且出现了这个异常。我还没有编写任何测试,但是尝试在实现之前进行测试。 使
我有一个实体Test,它将从特征中获取它的属性(和基本方法): class Test { use Trait_title; } trait Trait_title{ /** *
我(当然)正在尝试使用许多我不太了解的构造来维护一个项目。在尝试弄清楚 Spring 中 AOP 使用的过程中,我遇到了带有以下注释的方法: @Around(value = "@annotation(
目前我正在编写一个注释处理器,它将生成新的源代码。该处理器与应用程序本身隔离,因为它是构建项目的一个步骤,我将整个构建系统与应用程序分开。 这就是问题开始的地方,因为我想处理在应用程序中创建的注释。我
我将 Vertx Service Gen 注释处理器与 Kotlin kapt 结合使用。 在注释处理器启动之前,我的 kapt 失败,到处都是以下异常消息: error: scoping const
我很难弄清楚如何从其实际实现类中获取对 java.lang.annotation.Annotation 的引用。 注释本身看起来像这样(来自框架): @Target({ElementType.TYPE
如何创建类似的注释 @Table(name="batch", uniqueConstraints= @UniqueConstraint(columnNames = {"compound_id"
我刚开始使用Spring Boot,我收到这个错误已经有一段时间了,不幸的是无法修复它。从那时起,我一直在谷歌上搜索,但仍然找不到我做错了什么。在我的代码下面找到:。实体。刀。主要。误差率。启动App
输出文本: Execution failed for task ':app:checkDebugDuplicateClasses'. 1 exception was raised by worker
假设我想使用宏注释来复制@specialized(Int) 之类的注释——我知道这很疯狂。像这样的东西: class expand(expanded: Any*) extends Annotation
假设我想使用宏注释来复制@specialized(Int) 之类的注释——我知道这很疯狂。像这样的东西: class expand(expanded: Any*) extends Annotation
注解处理过程中我目前正在处理一个方法的注解: @Override public boolean process(Set elements, RoundEnvironment env) { Mess
我有接口(interface)资源和几个实现它的类,例如音频、视频...此外,我创建了自定义注释MyAnnotation: @MyAnnotation(type = Audio.class) cl
我的项目包括较旧的未注释 Controller 和较新的基于注释的 Controller 。 我使用的是最新的 Spring jar (3.0.5),在我的 dispatcher-servlet.xm
我正在写一些简单的 win32 东西,我正在使用以下 wWinMain int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance
我是一名优秀的程序员,十分优秀!