Awa*_*Awa 3 java maven sonarqube
public String generateURLSafeToken(String username, char[] password) throws CredentialTokenException {
this.tokenValid = false;
String token = null;
if ((username.length() < 1) || (username == null)) {
throw new CredentialTokenException("Username cannot be an empty string or null.");
}
if ((password.length < 1) || (password == null)) {
throw new CredentialTokenException("Password cannot be an empty or null.");
}
Run Code Online (Sandbox Code Playgroud)
我在第4行和第7行遇到此错误(用户名== null和密码== null)
我需要在我的代码中使用这一部分.我正在尝试isEmpty()而不是null,但也面临着问题.什么是解决此SONAR错误的替代方法或解决方案
Tun*_*aki 11
始终评估的条件false是username == null和password == null.
我们举个例子username.运营商||是短路意味着,如果左边是它不会评价的右手边true.基本上,有两种情况:
username给出的不是null.username.length() < 1评估
条件true,我们直接返回并进入if分支false,我们尝试评估username == null.但由于username给定的不是null,所以总是评估false.username给出的null.username.length() < 1评估条件.这实际上就在那里停止:它将抛出一个NullPointerException并且不会评估右侧.因此,您可以看到,无论何时username == null实际评估条件,结果始终如此false.这就是SonarQube警告告诉您的内容.
这里的解决方案是扭转你的两个条件.考虑一下
if (username == null || username.length() < 1)
Run Code Online (Sandbox Code Playgroud)
代替.如果你重新开始并完成每个案例,你会注意到没有一个表达式总会有相同的结果:
username给出的不是null.第一个条件清楚地评估到false,第二个条件被评估,可能返回true或false.username给出的null.第一个条件清楚地评估true和短路.| 归档时间: |
|
| 查看次数: |
15409 次 |
| 最近记录: |