Skip to content

Instantly share code, notes, and snippets.

@amihaiemil
Last active October 24, 2017 06:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amihaiemil/29b5ccd6902e243cce29ee0dec2c857d to your computer and use it in GitHub Desktop.
Save amihaiemil/29b5ccd6902e243cce29ee0dec2c857d to your computer and use it in GitHub Desktop.
2017 Award review for project DrBookings/drbookings

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

Quick overview (+/- mean ups and downs)

  • (+) 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

Detailed view

"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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment