我们有一个自定义库,它提供了一种Strings.isFilled
确保给定字符串既不为空也不为空的方法。(https://github.com/scireum/sirius-kernel/blob/master/src/main/java/sirius/kernel/commons/Strings.java#L65)
如果我们现在有这样的模式:
public void someMethod(@Nullable String param) {
if (Strings.isFilled(param)) {
methodWithNonNullParameter(param);
}
}
private void methodWithNonNullParameter(@Nonnull String param) {
LOG.FINE(param);
}
那么 sonarlint 将触发规则 S2637:“@NonNull”值不应设置为 null。但是:如果我们手动设置 sonar.java.libraries 并且只将本地 maven 存储库中的库 (sirius-kernel.jar) 放入其中,则分析有效!
是否有可能,IntelliJ 和 Maven 都为 SonarLint 提供了太多的库,以至于它开始忽略一些?使用maven和debug logging的时候,然后sonar:sonar
高兴的报告说它使用了classpath中的所有库,能找到所有需要的类并且没有报错?