A library for computing Javadoc coverage on Java source files. Documentation coverage is a measure of how mature and easy to use a software project is.
The library holds the following opinions about what should be covered with Javadoc. These opinions may be made more configurable in the future.
- Public classes, interfaces, annotation definitions, and
enumshould have Javadoc with a non-empty description, and all type parameters should be documented with@param <T>and have a non-empty description - Public methods and constructors in public classes should have Javadoc with a non-empty description, and these tags
when applicable
- type parameters
- parameters
- return
- throws
- Public fields in public classes should have Javadoc with a non-empty description
Basic usage to measure a Java source file is:
val measurer = new MeasurerCheckStyle(Seq(new JavadocTypeMeasure(), new JavadocMethodMeasure()))
measurer.measure(Seq(new File("<path-to-java-file>.java"))).map { coverages =>
// use
}
There are three concepts:
Measureris an object that can measure documentation coverage for a given set of files. There is currently only one implementation,MeasurerCheckStylewhich works for Java files with Javadoc only. We plan to add support for Scala files with Scaladoc in the future (and other popular languages).MeasurerCheckStylecreates an abstract syntax tree for the source file and delegates to givenMeasureobjects to measure the coverage of different code items.Measureis an object that can measure a specific kind of documentation coverage. Currently these are coupled to the CheckStyle Java syntax tree.Coverageis the model object that represents the documentation coverage that was measured. It contains information about which class or method the coverage is for, how many of the expected documentation items (listed above) were covered, the total number of expected documentation items (listed above), and for any missing coverage, the description of what was missing.