运行SonarQube扫描时,所有case class
和object
的scala文件都标记有奇怪的问题:
Method com.org.package.ExampleCaseClass$.<static initializer for >() uses a Side Effect Constructor
如果我将其转换为普通班级,问题就很奇怪了。案例类/对象有什么不同?
将Scala反编译为Java表明确实存在一个静态块:
public static final ExampleCaseClass$ MODULE$;
static {
new ExampleCaseClass$();
}
具有问题的示例案例类:
case class ExampleCaseClass(var1: String,
var2: String,
var3: String,
var4: String,
var5: String,
var6: String,
var7: String,
var8: String)
Sonar扩展了这个问题:
但是,考虑到此类仅在构造函数中使用字符串,我不确定会有什么副作用。这是假阳性吗?
答案 0 :(得分:0)
最终决定将声纳问题标记为误报,并继续我们的生活。