Code Coverage Analyzer
Principle
The Simulator features an option to output .cc
(Code Coverage)
files that represent the use rate of functions of an application. It
traces how the opcodes are really executed.
Functional Description
The Code Coverage Analyzer scans the output .cc
files, and outputs an
HTML report to ease the analysis of methods coverage. The HTML report is
available in a folder named htmlReport in the same folder as the .cc
files.
Dependencies
In order to work properly, the Code Coverage Analyzer should input the .cc
files (See Generate Code Coverage).
The .cc
files rely on the classpath used during the execution of the Simulator to the Code Coverage Analyzer.
Therefore the classpath is considered to be a dependency of the Code Coverage Analyzer.
Installation
This tool is a built-in Architecture tool.
Use
A MicroEJ tool is available to launch the Code Coverage Analyzer tool. The tool name is Code Coverage Analyzer.
Two levels of code analysis are provided, the Java level and the bytecode level. Also provided is a view of the fully or partially covered classes and methods. From the HTML report index, just use hyperlinks to navigate into the report and source / bytecode level code.
./gradlew execTool --name=codeCoverageAnalyzer \
--toolProperty="cc.dir=/MODULE_PATH/build/output/com.company.Main/cc/" \
--toolProperty="cc.includes=com.company.*" \
--toolProperty="cc.excludes=" \
--toolProperty="cc.src.folders=/MODULE_PATH/src" \
--toolProperty="cc.html.dir=/MODULE_PATH/cc"
Options
Option: *.cc files folder
Option Name: cc.dir
Description:
Specify a folder which contains the cc files to process (*.cc).
Option: Source Folders
Option Name: cc.src.folders
Description:
A list of folders to the source files.
Option: HTML Dir
Option Name: cc.html.dir
Description:
The output directory for the HTML report.
Option: Includes
Option Name: cc.includes
Description:
List packages and classes to include to code coverage report (;
separated).
If no package/class is specified, all classes found in the project classpath
will be analyzed.
Examples:
packageA.packageB.*
: includes all classes which are in package
packageA.packageB
packageA.packageB.className
: includes the class
packageA.packageB.className
Option: Excludes
Option Name: cc.excludes
Description:
List packages and classes to exclude to code coverage report (;
separated).
If no package/class is specified, all classes found in the project classpath
will be analyzed.
Examples:
packageA.packageB.*
: excludes all classes which are in package
packageA.packageB
packageA.packageB.className
: excludes the class
packageA.packageB.className