Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

README.md

CHP (Call Hierarchy Printer) prints selected method call hierarchy in text format for easy processing (eg. grep). It is equivalent to "Call Hierarchy" function in any advanced IDE.

Installation

gradle jar

Usage

  1. Before running the code you need classpath for the analyzed project.

    For Maven run:

     mvn dependency:build-classpath | grep -v "^\[.*\].*" | tr '\n' ':' > this.classpath
    

    For Gradle add this to build.gradle:

     task showClasspath << {
     	it.println sourceSets.main.runtimeClasspath.collect { it.absolutePath }.join(':')
     }
    

    and run

     gradle -q showClasspath > this.classpath
    
  2. To print method call hierarchy run:

     java -jar build/libs/org.chp-VERSION.jar -m (--method-name) METHOD_NAME -s (--source-folder) SOURCE_FOLDERS --classpath-file CLASSPATH_FILE
    
     --classpath-file CLASSPATH_FILE     : file containing the classpath for the analyzed project
     -c (--classpath) CLASSPATH          : classpath for the analyzed project
     -m (--method-name) METHOD_NAME      : method name to print call hierarchy
     -s (--source-folder) SOURCE_FOLDERS : source folder(s) for the analyzed project
    

Example

Execute following from this project root directory:

$ gradle -q showClasspath > this.classpath
$ java -jar build/libs//org.chp-*.jar -s src/main/java -m org.chp.ShowMethodCallHierarchy.main --classpath-file this.classpath

Output:

Method call hierarchy callees of
org.chp.ShowMethodCallHierarchy.main(java.lang.String[])
  org.chp.ShowMethodCallHierarchy.doMain
    spoon.Launcher.setArgs(java.lang.String[])
    spoon.Launcher.setArgs(java.lang.String[])
    org.apache.commons.lang3.StringUtils.strip(java.lang.String, java.lang.String)
    org.apache.commons.io.FileUtils.readFileToString(java.io.File)
    spoon.Launcher.addInputResource(spoon.compiler.SpoonResource)
    spoon.Launcher.run
    org.chp.ShowMethodCallHierarchy.printCallHierarchy(spoon.Launcher, java.io.PrintStream)
      spoon.Launcher.getFactory
      org.chp.ClassHierarchyProcessor.executeSpoon(spoon.support.QueueProcessingManager)
        spoon.support.QueueProcessingManager.addProcessor(spoon.processing.Processor<?>)
        spoon.support.QueueProcessingManager.process
        org.slf4j.Logger.debug(java.lang.String)
      org.chp.MethodExecutionProcessor.executeSpoon(spoon.support.QueueProcessingManager)
        spoon.support.QueueProcessingManager.addProcessor(spoon.processing.Processor<?>)
        spoon.support.QueueProcessingManager.process
        org.slf4j.Logger.debug(java.lang.String)
      org.chp.MethodCallHierarchyBuilder.forMethodName(java.lang.String, java.util.Map<spoon.reflect.reference.CtExecutableReference, java.util.List<spoon.reflect.reference.CtExecutableReference>>, java.util.Map<spoon.reflect.reference.CtTypeReference, java.util.Set<spoon.reflect.reference.CtTypeReference>>)
        org.chp.MethodCallHierarchyBuilder.findExecutableForMethodName(java.lang.String, java.util.Map<spoon.reflect.reference.CtExecutableReference, java.util.List<spoon.reflect.reference.CtExecutableReference>>)
          java.util.Map<spoon.reflect.reference.CtExecutableReference, java.util.List<spoon.reflect.reference.CtExecutableReference>>.keySet
          spoon.reflect.reference.CtTypeReference.getQualifiedName
          spoon.reflect.reference.CtExecutableReference.getDeclaringType
          spoon.reflect.reference.CtReference.getSimpleName
          java.lang.String.equals(java.lang.Object)
      org.chp.MethodCallHierarchyBuilder.printCallHierarchy(java.io.PrintStream)
        java.io.PrintStream.println(java.lang.String)
        org.chp.MethodCallHierarchyBuilder.printCallHierarchy(java.io.PrintStream, spoon.reflect.reference.CtExecutableReference, java.lang.String, java.util.Set<spoon.reflect.reference.CtExecutableReference>)
          java.util.Set<spoon.reflect.reference.CtExecutableReference>.contains(java.lang.Object)
          java.util.Set<spoon.reflect.reference.CtExecutableReference>.add(spoon.reflect.reference.CtExecutableReference)
          java.util.Map<spoon.reflect.reference.CtExecutableReference, java.util.List<spoon.reflect.reference.CtExecutableReference>>.get(java.lang.Object)
          java.io.PrintStream.println(java.lang.String)
          java.lang.Object.toString
          org.chp.MethodCallHierarchyBuilder.printCallHierarchy(java.io.PrintStream, spoon.reflect.reference.CtExecutableReference, java.lang.String, java.util.Set<spoon.reflect.reference.CtExecutableReference>)
          java.lang.String.concat(java.lang.String)
          java.util.Map<spoon.reflect.reference.CtTypeReference, java.util.Set<spoon.reflect.reference.CtTypeReference>>.get(java.lang.Object)
          spoon.reflect.reference.CtExecutableReference.getDeclaringType
          spoon.reflect.reference.CtExecutableReference.getOverridingExecutable(spoon.reflect.reference.CtTypeReference)
          java.io.PrintStream.println(java.lang.String)
          java.lang.Object.toString
          org.chp.MethodCallHierarchyBuilder.printCallHierarchy(java.io.PrintStream, spoon.reflect.reference.CtExecutableReference, java.lang.String, java.util.Set<spoon.reflect.reference.CtExecutableReference>)
          java.lang.String.concat(java.lang.String)
  org.chp.ShowMethodCallHierarchy.parse(java.lang.String[])
    org.kohsuke.args4j.CmdLineParser.parseArgument(java.lang.String[])
    java.io.PrintStream.println(java.lang.String)
    java.lang.Throwable.getMessage
    java.io.PrintStream.print(java.lang.String)
    org.kohsuke.args4j.CmdLineParser.printExample(org.kohsuke.args4j.OptionHandlerFilter)
    java.io.PrintStream.println
    java.io.PrintStream.println
    java.io.PrintStream.println(java.lang.String)
    org.kohsuke.args4j.CmdLineParser.printUsage(java.io.OutputStream)
    java.lang.System.exit(int)

About

Java Call Hierarchy Printer

Resources

Releases

No releases published

Packages

No packages published

Languages