forked from phoedos/pmd
Fix NPE for array types
This commit is contained in:
@ -204,9 +204,10 @@ public class UnnecessaryFullyQualifiedNameRule extends AbstractJavaRule {
|
||||
String name = node.getImage();
|
||||
boolean isJavaLang = name != null && name.startsWith("java.lang.");
|
||||
|
||||
if (isJavaLang && node.getType() != null) {
|
||||
if (isJavaLang && node.getType() != null && node.getType().getPackage() != null) {
|
||||
// valid would be ProcessBuilder.Redirect.PIPE but not java.lang.ProcessBuilder.Redirect.PIPE
|
||||
String packageName = node.getType().getPackage().getName();
|
||||
String packageName = node.getType().getPackage() // package might be null, if type is an array type...
|
||||
.getName();
|
||||
return "java.lang".equals(packageName);
|
||||
} else if (isJavaLang) {
|
||||
// only java.lang.* is implicitly imported, but not e.g. java.lang.reflection.*
|
||||
|
@ -469,6 +469,22 @@ public class ThreadStuff {
|
||||
public Thread stuff() {
|
||||
return new Thread(java.lang.Thread.currentThread());
|
||||
}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>Nullpointer in isJavaLangImplicit for java.lang.String[] arrays</description>
|
||||
<expected-problems>1</expected-problems>
|
||||
<expected-linenumbers>6</expected-linenumbers>
|
||||
<code><![CDATA[
|
||||
public class TestArrayType {
|
||||
String[] someArray = new String[0];
|
||||
|
||||
public void foo() {
|
||||
boolean b1 = someArray instanceof String[];
|
||||
boolean b2 = someArray instanceof java.lang.String[]; // unnecessary FQN
|
||||
}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
Reference in New Issue
Block a user