我收到了来自 Spotbugs 的警告。所有这些文件中的 @SuppressFBWarnings 都会抑制这种情况。我需要找到一种方法来从一个地方抑制这种情况,这样我就不必在该包中的每个文件中@SuppressFBWarnings。
关于 Spotbug 发现的小问题,我很难修复。
在这个超级简单的 POJO 上:
import java.util.Map;
public class QuestionPojo {
private final Map<String, String> map;
public QuestionPojo(Map<String, String> map) {
this.map = map;
}
public Map<String, String> getMap() {
return map;
}
@Override
public String toString() {
return "QuestionPojo{" +
"map=" + map +
'}';
}
}
Run Code Online (Sandbox Code Playgroud)
map我收到了旗帜may expose internal representation by storing an externally mutable object into QuestionPojo.map
一次上this.map = map;
另一张关于吸气剂return map。
我尝试调用一个可能的clone()方法,但似乎 Map 不支持它。
请问我该如何解决这个问题?
谢谢
这是我的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.stackoverflow.test</groupId>
<artifactId>HelloWorld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>HelloWorld</name>
<dependencies>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>3.1.0-RC5</version>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.github.hazendaz.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>3.0.6</version>
<dependencies>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
<version>3.1.0-RC5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
mvn compile,mvn package并且mvn site运行没有任何问题。建立成功。
该项目由单个HelloWorld.java组成,其中包含一些错误。
mvn site没有显示任何错误或错误。如何获得Spotbug来扫描我的代码?
给定此类:
data class CSVRecord(private val columns: SortedSet<CSVColumn>) : Iterable<String> {
override fun iterator(): Iterator<String> {
return columns.map { it.value }.iterator()
}
}
Run Code Online (Sandbox Code Playgroud)
spotbugs引发错误:
[错误]从Collection到com.example.CSVRecord.iterator()中抽象类java.util.List的可疑转换。[com.example.CSVRecord]在CSVRecord.kt:[第15行] BC_BAD_CAST_TO_ABSTRACT_COLLECTION
这仅仅是因为Spotbugs不支持Kotlin,还是我的实现可能无效?
我是 Gradle 新手,正在尝试为我的 Spring Boot 多模块项目配置 Spotbugs。
在我的父母 build.gradle 中,
buildscript {
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${versionSpringBoot}"
}
}
plugins {
id 'com.github.spotbugs' version '1.6.8'
}
allprojects {
apply plugin: 'eclipse'
apply plugin: 'idea'
}
subprojects {
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'pmd'
apply plugin: 'jacoco'
dependencyManagement {
imports {
}
}
configurations{
}
sourceCompatibility = '15'
targetCompatibility = '15'
dependencies {
}
pmd {
consoleOutput = true
toolVersion = "${versionPmd}"
sourceSets = [sourceSets.main]
ruleSets = ["category/java/errorprone.xml", "category/java/bestpractices.xml"] …Run Code Online (Sandbox Code Playgroud) 简而言之:是否有用于 FindBugs/SpotBugs 过滤器文件的官方 DTD 或 XML 模式?
详细说明:在 FindBugs/SpotBugs 中,可以定义过滤器文件,它们是 XML 文件。我的 IDE 抱怨缺少 DTD 或 XML 架构,这很好。我知道如何抑制此警告,但我更喜欢添加正确的语法文件。因此,FindBugs/SpotBugs 过滤器文件是否提供了 DTD 或 XML Schema?我找不到一个。
我正在 Gradle 项目中设置 Spotbugs,但当我运行它时,Spotbugs 确实会生成输出报告,但会将失败堆栈跟踪记录到控制台。我想知道是否有办法抑制它。
这是我的 Gradle 文件:
buildscript {
buildscript {
repositories {
google()
mavenCentral()
gradlePluginPortal()
jcenter()
}
dependencies {
classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.0.5"
}
}
}
apply plugin: 'java'
apply plugin: "com.github.spotbugs"
group 'com.mridang'
version '1.1.0'
sourceCompatibility = 1.9
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
spotbugs {
toolVersion = '4.0.2'
ignoreFailures = true
}
spotbugsMain {
ignoreFailures = true
}
spotbugsTest {
ignoreFailures = true
}
Run Code Online (Sandbox Code Playgroud)
当我运行 Gradle 时,出现以下错误:
> …Run Code Online (Sandbox Code Playgroud)