Code2Graph icon indicating copy to clipboard operation
Code2Graph copied to clipboard

bug: gen.java | findEntityNodeByName 导致 data_type 类型边连接出错

Open Guitenbay opened this issue 3 years ago • 0 comments

对于一下的情况,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();
    }
  }

Guitenbay avatar Jul 01 '22 05:07 Guitenbay