![](/img/trans.png)
[英]NPE checked by StringUtils.isNotBlank still causing eclipse @NotNull warning
[英]Commons-lang StringUtils isNotBlank method still raise NPE
Sonar 是否支持 commons-lang StringUtils ?
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
環境:
INFO: SonarQube Scanner 3.2.0.1227
INFO: Java 1.8.0_121 Oracle Corporation (64-bit)
INFO: Linux 4.19.2-1.el7.elrepo.x86_64 amd64
Community EditionVersion 7.6 (build 21501) 代碼來重現這個問題:
public class DetectorImport {
public String check1(Nonentity nonentity) {
String s;
if(nonentity == null) {
s = null;
}else {
s = nonentity.getName();
}
if(StringUtils.isNotBlank(s)) {
s = s.replaceAll("(", "(");
}
return s;
}
}
從這個聲納谷歌組中,提到聲納支持 common.langs 方法。
https://groups.google.com/forum/#!topic/sonarqube/aluTP63hfyA
也許另一種方法可以讓您使用其他實用程序類,這些實用程序類通常在 Java 項目中使用。 我們目前支持來自 commons-lang StringUtils(v2 和 v3)的方法、guava 前提條件和來自 java.util.Objects(nonNull、isNull、requireNonNull)的 java 8 方法。 由於我們知道這些方法的行為方式,因此我們能夠正確處理此類調用並丟棄類似的 FP。 當然,我不想強迫你使用這樣的庫來讓分析器滿意。 :)
將上面的代碼更改為以下代碼確實解決了這個問題:
public class DetectorImport {
public String check1(Nonentity nonentity) {
String s;
if(nonentity == null) {
s = null;
}else {
s = nonentity.getName();
}
if(s !=null) {
s = s.replaceAll("(", "(");
}
return s;
}
}
以上問題復制自
https://community.sonarsource.com/t/commons-lang-stringutils-isnotblank-method-still-raise-npe/21517
我不是 Sonar 中的 OP,但我在那里提供了我的解決方案。 我有完全相同的問題,所以我將解決方案復制給其他人。
我們使用 SonarScanner 而不是 maven 聲納插件進行掃描。 對我們來說,問題是“sonar.java.libraries”變量沒有正確設置。 我添加了目標“ dependency:copy-dependencies
”作為 maven 執行的一部分。 這將所有依賴項復制到正確的位置,然后我設置了屬性“-Dsonar.java.libraries=target/dependency”
,一切都開始按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.