Code2Graph
Code2Graph copied to clipboard
bug: gen.java | findEntityNodeByName 导致 data_type 类型边连接出错
对于一下的情况,data_type 类型边连接出错:
public static void scan1() {
char x1 = 'a';
char x2 = 'b';
int x_val = digits[x1] * 16 + digits[x2];
char x_char = (char) x_val;
}
问题发生原因:
x_char 会被认为是 char 的类,因为 findEntityNodeByName 是按最后字符串一致来判断是否找到 Entity
edu/pku/code2graph/gen/jdt/AbstractJdtVisitor.java 代码:
protected Optional<Node> findEntityNodeByName(String name) {
if (defPool.containsKey(name)) {
return Optional.of(defPool.get(name));
} else {
// greedily match as simple name
return defPool.entrySet().stream()
.filter(e -> e.getKey().endsWith(name)) // 这里有问题
.map(Map.Entry::getValue)
.findFirst();
}
}