Crap4J

The Jenkins project announced an unresolved security vulnerability affecting the current version of this plugin (why?):

This plugin reads the "crappy methods" report from Crap4J. Jenkins will generate the trend report of crap percentage and provide detailed information about changes. Users will be able to track which methods are crappy and when they entered and left the code base.

Restrictions

Currently, this plugin is restricted to use with freestyle (ant) jobs. Future releases might support all kinds of jobs. Let me know your needs by filing a request for enhancement in the issue tracker.

Description

The crap4j plugin scans the Crap4J report data and reports trends.
These features are currently implemented:

  • Crap report page for jobs
    • Trend charts for Crappyness, Crap Method Count, Crap Load and Crap
    • List of all current crap methods of the job
  • Crappyness trend chart on job overview page
  • Crap report page for builds
    • List of all current crap methods of the build
    • List of new and fixed crap methods in comparison to the previous build
  • Crap report summary in the build report column
    • Statistical summary and links to current, new and fixed crap methods

Configuring the Crap4J Plugin

  1. Get the crap4j plugin, preferably using Jenkins plugin manager
  2. Install the crap4j plugin in your Jenkins, if downloaded manually
  3. Configure your project's build script to generate crap4j XML reports (This happens along with the HTML report)
  4. Enable the "Publish Crap" publisher on the job configuration page
  5. Specify the directory where the crap4j report (report.xml) is generated
  6. Perform some builds to receive a trend

The crap4j plugin currently has no configurable parameters. The build health indicator is set to the Crap4J quality suggestion, with 15% crappy methods being 0% build health.

Feedback

This plugin is developed and maintained by Daniel Lindner with kind support from Softwareschneiderei GmbH. Please feel free to contact me for feedback. If you have suggestions for new features or you've found a bug, please use the issue tracker or the mailing lists. If you use the issue tracker, assign the issue directly to java.net ID dlindner.

Changelog

Release 0.9 (2014-10-22):

  • Fail-fast behaviour by explicitly signaling missing report files (see Issue 24912)
  • Uses Jenkins URL instead of server name now (see Issue 22279)

Release 0.8 (2010-08-01):

  • Fix incompatibility with hudson core version 1.368 (see Issue 7088)
  • Job configuration is stored again (see Issue 5493)
    • Attention! This requires you to re-configure all your crap4j-enabled jobs once. Sorry for the inconvenience!

Release 0.7 (2009-12-30):

  • Fix links for installs with context path (see Issue 4361)
  • Decrease parsing effort of not crappy methods
  • Remove dependency on maven plugin
  • Update code for more recent Hudson

Release 0.6.1 (2009-03-15):

  • Restored compatibility with Java 5 (see Issue 3282, reported by felixdrueke)

Release 0.6 (2009-02-25):

  • Several report.xml files can be merged into one report now (see Issue 2995, suggested by Oliver Imlinger)
  • Report parsing takes locale into account (see Issue 2953, reported by Oliver Imlinger)
  • Report path pattern now supports space characters (see Issue 2963, reported by Mihael Vrbanec)
    • Attention! This breaks backward compatibility for patterns using spaces as separators. Use commas instead.

Release 0.5 (2008-12-31):

  • Enabled use in Master/Slave setups (see Issue 2385)

Release 0.4 (2008-07-03):

  • Identical on features to version 0.3
  • Added missing documentation
  • Corrected misleading configuration section title

Release 0.3 (2008-07-03) - please use 0.4 instead.

  • Bugfix: crappyness trend chart missing scale on y-axis if lower than 1.0 (Issue 1952, reported by Nigel Charman)
  • Enhancement: Adjustable build health indicator (Issue 1985)

Release 0.2 (2008-06-03):

  • Compatible to Java5 VMs. Improvement request by Leon Oosterwijk.

Release 0.1 (2008-05-17):

  • Initial release. Please feel free to suggest new features.