findbugs-reporter's purpose is to provide easy and intuitive way to navigate bug reports produced by findbugs. It includes a parser for findbugs' xml format, a command line JXR generation tool, based on libJXR and a script runs everything.
The in browser display features error highlighting, sorting by several criteria and source code browsing. Please refer to the screenshots directory for several examples.
To get started you need to follow several simple steps:
Install findbugs standalone
Build and install libJXR
git clone https://github.com/ContemplateLtd/libJXR.git
cd libJXR
mvn install
Clone findbugs reporter and build it!
git clone https://github.com/ContemplateLtd/findbugs-reporter.git
cd findbugs-reporter
mvn clean package
This produces the following package: findbugs-reporter/target/findbugs-reporter-1.0-distributable.tar.gz
Grab it and extract it somewhere.
After having built findbugs-reporter, extract the tar archive and cd to the directory:
tar -xvf findbugs-reporter-1.0-distributable.tar.gz
cd findbugs-reporter-1.0
Analize your favourite project!
./deploy.py -d DESTINATION_FOLDER -s PATH_TO_JAVA_FILES1 PATH_TO_JAVA_FILES2, etc -c PATH_TO_CLASS_FILES1 PATH_TO_CLASS_FILES2, etc -p PROJECTNAME
Start a simple http server in the DESTINATION_FOLDER directory:
cd DESTINATION_FOLDER
python2 -m SimpleHTTPServer
Open http://127.0.0.1:8000 in your favourite browser
jxr-er is an application that allows you to generate Java Cross Reference html for your project with one single command.
It relies on on libJXR which is a fork of maven-jxr that adds functionality.
To build jxr-er only do:
git clone https://github.com/ContemplateLtd/findbugs-reporter.git
cd findbugs-reporter/jxr-er
mvn clean package
jxr-er is located in the jxr-er directory. Syntax is as follows:
Assuming you have the templates directory in the same folder. If that is not the case you must provide a the templates folder via the -t switch
java -jar jxr-er-1.0.jar -s SOURCE_DIR1 SOURCE_DIR2, etc -d destination_dir
All available options:
Usage: [options] Options: -help, --help, -h Display help text. Default: false * -d Output directory -f Display footer Default: false -ftext Text of the footer. -inputencoding Specify input encoding for the java files. Default: UTF-8 -pname Project name for the template's htmls. Default: Project * -s Path to the source files. Default: [] -style Provide a custom stylesheet. It is strongly recommended that if you want to provide a custom stylesheet, you should built upon the default one.The default stylesheet is located in the templates directory. -t Path to templates. Default: templates -tbottom Footer for the template's htmls. Default: Sample footer. -wtitle Window title of the template's htmls. Default: Window
A javascript parser that reads the findbugs outputted XML and puts it in a convenient to use javascript datastructure. It is located under html/lib/parse.js
Include the following in your .html file
<script src="../lib/jquery.js"> </script>
<script src="parser.js"> </script>
and provide a callback function from another javascript file:
parse_findbugs('findbugs_formatted.xml', test_callback);
function test_callback(findings) {
problems = findings;
//Do something with problems
}
The javascript datastructure has the following output:
.severity - major/minor .errortype - ERRORTYPE [by-id][index] .descr - Longer description than the message [by-cat][category][index] .msg - the message of the error findings[by-type][ERRORTYPE][index] .locations[index].attribute -element of location array [by-sev][severity][index] .primary() - returns the primary error location. [by-class][classname][index] .details - detailed description of the error type .category - category
Automatic testing can be done using node. Requirements are buster, xmlhttprequest and jsdom.
Tests are located in the test directory.
npm install buster
npm link buster
npm install jsdom
npm link jsdom
npm install xmlhttprequest
npm link xmlhttprequest
node test.js
findbugs report was generated using:
findbugs -textui -xml:withMessages -output xml/findbugs.xml PATH_TO_PROJECT_CLASS_FILES
jquery, jstree with heavily modified theme.
Everything but, jquery and jstree is MIT licensed and owned by the University of Edinburgh