-
Notifications
You must be signed in to change notification settings - Fork 1
Analysis
Serves as an alternative to DependencyAnalyzer
, intended as an extension by Mike, but remains as work in progress with no update since 2016. BlockAnalyzer
seems to be a control-flow block level approach to data-flow analysis. Not invoked in current standard version of HitoshiIO.
Extends ASM's MethodVisitor
, intended as an extension by Mike, but remains as work in progress with no update since 2016. CalleeAnalyzer
only counts, for a given method, the number of times a method is called and the number of times an unique method is called. Not invoked in current standard version of HitoshiIO.
Extends ASM's BasicInterpreter
, intended as an extension by Mike, but remains as work in progress with no update since 2016. Used in conjunction with CalleeAnalyzer
to count external method calls. Not invoked in current standard version of HitoshiIO.
A script that provides the number of clones in a codebase - it does not utilize the mysql database that is populated by SimAnalysisDriver
, and instead uses an unspecified file format. Not invoked in current standard version of HitoshiIO.
Extends ASM's MethodVisitor
. DependencyAnalyzer
performs input/output detection and capture by utilizing the DependentValue
fields populated by DependentValueInterpreter
. This is where the majority of data-flow analysis and control-flow analysis is performed. All JVM execution stack value capture and instrumentation is done at this step.
Extends ASM's BasicValue
. A DependentValue
stores additional information about values on the execution stack such as parents/dependencies and input source/output sink Instructions.
Extends ASM's BasicInterpreter
. DependentValueInterpreter
traces DependentValues
throughout bytecode instruction calls, filling a DependentValue
's metadata with the appropriate information.
Extends DependentValueInterpreter
, intended as an extension by Mike, but remains as work in progress with no update since 2016. It seems to be an analyzer that only overrides method invocations, and looks for any variables tainted by the other methods. Not invoked in current standard version of HitoshiIO.
A script that seems to unzip all I/Os captured in IODriver
, and count the number of records captured. Not invoked in current standard version of HitoshiIO.
A script that pre-analyzes source code within a given directory; this is the first step in HitoshiIO where fully qualified class name and method signature is collected and stored in either clonedetector/classinfo/cb.db
or clonedetector/classinfo/methodeps.db
.
A script to collect info on methods and classes within a codebase. Not invoked in current standard version of HitoshiIO.
Extends ASM's Frame
. Serves to construct a control-flow graph and perform a post-dominator analysis for control-flow driven data-flow analysis.
Extends ASM's MethodVisitor
, intended as an extension by Mike, but remains as work in progress with no update since 2016. It seems to perform more analysis on output instructions by marking which parameters that actually influence output instructions. Not invoked in current standard version of HitoshiIO.
A script that seems to perform the same steps as IODriver
except with SiteAnalyzer
as the extension of ASM's MethodVisitor
instead of DependencyAnalyzer
. Intended as an extension by Mike, but remains as work in progress with no update since 2016. Does not output I/O records, but instead prints the numbers of inputs that are and are not parameters. Not invoked in current standard version of HitoshiIO.
Documentation belonging to the development of HitoshiIO can be found here. However, some files are still poorly documented, and some are not used at all in the current version of the system and exist for further development/research.
Below is the organization of HitoshiIO's source code: