This file contains the review of the codebase as it was on 01.10.2017:
Project: https://github.com/DrBookings/drbookings
Language: Java
Main Contributor: https://github.com/kerner1000
CLOC (cloc .
on the root directory):
354 text files.
318 unique files.
135 files ignored.
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Java 180 2836 3796 10007
XML 65 75 96 1231
Maven 1 1 0 369
CSS 9 29 150 165
YAML 1 1 0 20
-------------------------------------------------------------------------------
SUM: 256 2942 4042 11792
-------------------------------------------------------------------------------
Initial commit: 12 Jun 2016
- (+) over 10k LOC
- (+) ticketing (started later in the project's life)
- (+) code coverage calculated and displayed in a badge.
- (+) multiple releases containing latest fixes
- (+) code seems to be well organized
- (+) class naming
- (-) no PRs, writing on master
- (-) really low code coverate, according to the badge (< 10%)
- (-) no automation of the release process
- (-) poor release descriptions and no milestones on open tickets
- (-) no static analysis check
- (-) "Test" classes in the codebase
- (-) No interfaces
- (-) No javadocs
- (-) No technical documentation
"7 Deadly Sins" Status:
1) Traceable changes/Github tickets:
There are about a dozen tickets, in total, in the repo, meaning the owner started ticketing rather late in the project's development. There are no Pull Requests, the author simply commits on master and adds the commit message fixes #123 -- this references the issue and closes it automatically, it's a Github feature.
- (+) ticketing (started later in the project's life)
- (-) no PRs, writing on master
2) Release process
The project has 21 releases so far, but it doesnt seem to be an automatic process. All of them are done by the developer, with titles such as "Awesome", "Good", "Try it out".
- (+) multiple releases containing latest fixes
- (-) not automation
3) Static analysis
I didn't find any static analysis checker. There is one single pom.xml, under the folder simple
. The codebase seems to be under that folder, while all the others all build/configuration/plugin folders? The build script from .travis.yml
is
mvn clean package -Dheadless
- (-) no static analysis check
4) Test coverage
Code coverage is calculated and displayed with a badge on the README.md page. However, it is really low.
- (+) code coverage calculated
- (-) coverage really low (< 10%)
5) Non Stop development
While there are a lot of releases, I see no (or poor) release notes and no milestones set on the open issues
- (-) poor release descriptions and no milestones on open tickets
6) Patterns used
a) Framework:
The application is developed with JavaFX and comes as a desktop application (.jar
file to run). It doesn't seem to work with a database, but rather with XML files on disk. JAXB and its annotations are used to serialize/deserialize objects.
b) Code:
The codebase well organized, but I noticed all sorts of *Test
classes, which I don't think should be there.
Most classes do not implement interfaces, and of those which do, most of them are javafx.
specific interfaces, the classes implementing them probably do so for convension or because it is required by the framework. There are absolutely no javadocs. However, the class names seem to be OK.
- (+) code seems to be well organized
- (+) class naming
- (-) "Test" classes in the codebase
- (-) No interfaces
- (-) No javadocs
7) Documentation
The project has a User Wiki here, but absolutely no technical documentation. Besides that, the repository is very polluted with IDE/workspace specific files, which should have been gitignored (e.g. Eclipse's .project
and .classpath
files).
I would have no clue where to start if I were to contribute on this project. I don't understand why the repository can't have a simple maven project in it, instead of having all sorts of folders and plugins etc.
In this particular project, with such an old framework as JavaFX, I would clearly expect some strong technical overview/documentation + javadocs on every class.
- (+) User guide wiki
- (-) No technical documentation