次のクラスプロパティがあります。
class Properties {
private Boolean enabled;
public Boolean getEnabled() {
return enabled;
}
}
次のコードを記述すると、SonarLintはif条件に対して「ここでプリミティブなブール式を使用してください」という警告を表示します。
if (!properties.getEnabled()) {
return true;
}
// more code
If条件を次のように変更すると、警告が表示されなくなります。しかし、それほど読みにくく、それはSonarLintが望んでいることではありませんか?
if (properties.getEnabled().equals(Boolean.FALSE)) {
return true;
}
// more code
SonarLintはここで私に何をしたいのですか?何が問題ですか?
他のすでに述べたように、Sonarは、nullポインター例外がないことを確認するように求めています。少なくとも、変数に対して検証する前にチェックを行ったときに、これも確認しました。
次がある場合、Sonarは不平を言います
if (properties.getEnabled()) {
// Your code
}
しかし、nullに対するクイック検証を追加すると、Sonarはそれについて不平を言うのをやめます
if (properties.getEnabled() != null && properties.getEnabled()) {
// Your code
}
今、あなたが述べたように、あなたはブールクラスを使用して次を使用することができます
Boolean.TRUE.equals(properties.getEnabled());
なので
if (Boolean.TRUE.equals(properties.getEnabled())){
// Your code
}
Javaでは冗長すぎるようですが、内部では、オブジェクトがブール型であるかどうかをチェックするため、ここで説明するように、nullである可能性を破棄します: Is null check instanceofを呼び出す前に必要ですか?
Git repoから、何が受け入れられ、何が受け入れられないかを確認できます。
.booleanValue()を試してみてくださいif(properties.getEnabled()。booleanValue())のように{}それがuに役立つことを願っています。
Org.Apache.commons.lang3.BooleanUtilsを使用してください。これはnullセーフな方法です。
if (BooleanUtils.isNotTrue(properties.getEnabled())) {
return true;
}