MaturityAssessmentRules

From Wiki
Jump to: navigation, search

The maturity assessment process relies for rule-checking on results from open-source and well-known rule-checking tools, namely PMD and FindBugs. Others (CheckStyle, ...) may be added soon.

The complete list of rules is auto-generated on the dashboard documentation itself: http://dashboard.castalia.camp/documentation/rules.html


Architecture

A rule has the following characteristics:

  • Name (name): a human-readable name for the rule
  • Mnemo (mnemo): a machine-readable identifier for the rule (usually the one decided by the tool's author).
  • Description (desc): an array of paragraphs describing the rule.
  • Priority (priority): a number between 1 and 5 stating the importance of the rule.
  • Categories (cat): one or more space-separated category identifiers, e.g. COR ANA (for correctness and analysability).

The priorities defined as for now are: 0. Not set 1. Blocking: no false positive, will systematically induce a bug when executed. 2. High impact: no false positive, will sometimes induce a bug when executed. 3. Medium impact: no false positive, may induce a bug or is a bad practice. 4. Low Impact: May introduce a bug, but may have false positives. 5. Information: Minor remarks, may have false positives.

Only priorities in the range 1-3 should be counted in the artefacts evaluation. Categories 4 and 5 may have false positives and are mainly useful for code reviews and as information for developers.

The categories defined as for now are:

  • ANA analysability
  • CHA changeability
  • REL reliability
  • REU reusability
  • EFF efficiency
  • POR portability
  • COR correctness
  • SEC security
  • THR Threads
  • MAT maturity (good practices, defensive programming)


PMD

The version of PMD considered is the latest at the time of writing (5.2.3).

Rules: Only the rules from the java-basic, java-coupling, java-design, java-unused, java-empty rulesets have been transcripted.


FindBugs

The version of FindBugs considered is the latest as the time of writing (3.0.0).