DependencyTracker example fails in handling class Object
The example application DependencyTracker fails (null pointer exception) if
input includes the class Object. This happens when analyzing dependencies in
platform libraries that include the Object.class.
The bug is in method visit in DependencyVisitor.java as follows:
public void visit(
final int version,
final int access,
final String name,
final String signature,
final String superName,
final String[] interfaces)
{
String p = getGroupKey(name);
current = groups.get(p);
if (current == null) {
current = new HashMap<String, Integer>();
groups.put(p, current);
}
if (signature == null) {
addInternalName(superName); // BUG: superName is null for Object
addInternalNames(interfaces);
} else {
addSignature(signature);
}
}
Correction proposal:
public void visit(
final int version,
final int access,
final String name,
final String signature,
final String superName,
final String[] interfaces)
{
String p = getGroupKey(name);
current = groups.get(p);
if (current == null) {
current = new HashMap<String, Integer>();
groups.put(p, current);
}
if (signature == null) {
if (superName != null) // Class Object has no super class
addInternalName(superName);
addInternalNames(interfaces);
} else {
addSignature(signature);
}
}