Skip to content

Commit

Permalink
Modify record superclass return value
Browse files Browse the repository at this point in the history
  • Loading branch information
Adrninistrator authored and Adrninistrator committed Apr 13, 2022
1 parent 6caff25 commit 3ae78f1
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 19 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ apply plugin: 'maven-publish'
apply plugin: 'signing'

group 'com.github.adrninistrator'
version = "0.1.3"
version = "0.1.4"
def projectName = "java-callgraph2"
description = "${projectName}"
sourceCompatibility = 1.8
Expand Down
28 changes: 10 additions & 18 deletions src/main/java/com/adrninistrator/javacg/stat/JCallGraph.java
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,7 @@ private boolean handleOneJar(File jarFile, String jarFilePath, BufferedWriter re
addInterfaceMethod4SuperClass();

// 记录父类调用子类方法,及子类调用父类方法
if (!recordExtendsClassMethod(resultWriter)) {
return false;
}
recordExtendsClassMethod(resultWriter);

// 记录接口调用实现类方法
recordInterfaceCallClassMethod(resultWriter);
Expand Down Expand Up @@ -342,7 +340,7 @@ private void addInterfaceMethod4SuperClass() {
}

// 记录父类调用子类方法,及子类调用父类方法
private boolean recordExtendsClassMethod(BufferedWriter resultWriter) throws IOException {
private void recordExtendsClassMethod(BufferedWriter resultWriter) throws IOException {
Set<String> topSuperClassNameSet = new HashSet<>();

// 得到最顶层父类名称
Expand All @@ -357,15 +355,12 @@ private boolean recordExtendsClassMethod(BufferedWriter resultWriter) throws IOE

for (String topSuperClassName : topSuperClassNameSet) {
// 处理一个顶层父类
if (!handleOneTopSuperClass(topSuperClassName, resultWriter)) {
return false;
}
handleOneTopSuperClass(topSuperClassName, resultWriter);
}
return true;
}

// 处理一个顶层父类
private boolean handleOneTopSuperClass(String topSuperClassName, BufferedWriter resultWriter) throws IOException {
private void handleOneTopSuperClass(String topSuperClassName, BufferedWriter resultWriter) throws IOException {
JavaCGUtil.debugPrint("处理一个顶层父类: " + topSuperClassName);
List<TmpNode4ExtendsClassMethod> tmpNodeList = new ArrayList<>();
int currentLevel = 0;
Expand All @@ -380,13 +375,13 @@ private boolean handleOneTopSuperClass(String topSuperClassName, BufferedWriter
List<String> childrenClassInfoList = childrenClassInfoMap.get(currentNode.getSuperClassName());
if (childrenClassInfoList == null) {
System.err.println("### 未找到顶层父类: " + currentNode.getSuperClassName());
return false;
return;
}

int currentChildClassIndex = currentNode.getChildClassIndex() + 1;
if (currentChildClassIndex >= childrenClassInfoList.size()) {
if (currentLevel == 0) {
return true;
return;
}
currentLevel--;
continue;
Expand All @@ -396,9 +391,7 @@ private boolean handleOneTopSuperClass(String topSuperClassName, BufferedWriter
String childClassName = childrenClassInfoList.get(currentChildClassIndex);

// 处理父类和子类的方法调用
if (!handleSuperAndChildClass(currentNode.getSuperClassName(), childClassName, resultWriter)) {
return false;
}
handleSuperAndChildClass(currentNode.getSuperClassName(), childClassName, resultWriter);

// 处理下一个子类
currentNode.setChildClassIndex(currentChildClassIndex);
Expand All @@ -424,17 +417,17 @@ private boolean handleOneTopSuperClass(String topSuperClassName, BufferedWriter
}

// 处理父类和子类的方法调用
private boolean handleSuperAndChildClass(String superClassName, String childClassName, BufferedWriter resultWriter) throws IOException {
private void handleSuperAndChildClass(String superClassName, String childClassName, BufferedWriter resultWriter) throws IOException {
ExtendsClassMethodInfo superClassMethodInfo = extendsClassMethodInfoMap.get(superClassName);
if (superClassMethodInfo == null) {
System.err.println("### 未找到父类信息: " + superClassName);
return false;
return;
}

ExtendsClassMethodInfo childClassMethodInfo = extendsClassMethodInfoMap.get(childClassName);
if (childClassMethodInfo == null) {
System.err.println("### 未找到子类信息: " + childClassName);
return false;
return;
}

Map<String, MethodAttribute> superMethodAttributeMap = superClassMethodInfo.getMethodAttributeMap();
Expand Down Expand Up @@ -473,7 +466,6 @@ private boolean handleSuperAndChildClass(String superClassName, String childClas
writeResult(resultWriter, childCallSuperClassMethod + " " + JavaCGConstants.DEFAULT_JAR_NUM);
}
}
return true;
}

// 记录接口调用实现类方法
Expand Down

0 comments on commit 3ae78f1

Please sign in to comment.