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/462b2af2c4bc543e00207d78580e218f to your computer and use it in GitHub Desktop.
Save amihaiemil/462b2af2c4bc543e00207d78580e218f to your computer and use it in GitHub Desktop.
2017 Award review for Java project mafagafogigante/dungeon

This file contains the review of the codebase as it was on 01.10.2017:

Project: https://github.com/mafagafogigante/dungeon

Language: Java

Main Contributor: https://github.com/mafagafogigante

CLOC (cloc . on the root directory):

361 text files.
361 unique files.                                          
62 files ignored.

-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Java                           322           3262           3009          14606
XML                              4              4              3            454
Maven                            1              9              4            223
Python                           1             25             16             65
YAML                             3              4              0             43
Bourne Shell                     8              6             13             41
-------------------------------------------------------------------------------
SUM:                           339           3310           3045          15432
-------------------------------------------------------------------------------

Initial commit: 18 Nov 2014

Quick overview (+/- mean ups and downs)

  • (+) over 10k LOC
  • (+) Development via issues and PRs.
  • (+) No monster classes -- The only bigger classes I noticed where the entry points (classes Game and GameWindow). The rest seem to be < 150 loc.
  • (+) Javadocs are present on most classes.
  • (+) Regular releases
  • (+) Automation of some release tasks.
  • (+) Static analysis check with Checkstyle
  • (+) Fine overall documentation of the versioning, build and contributing schemes
  • (+) Milestones attached to issues

  • (-) Very low test coverage (25%)
  • (-) No interfaces. There are almost no interfaces in the codebase.

Detailed view

"7 Deadly Sins" Status:

1) Traceable changes/Github tickets:

Changes seem to be implemented in an organized way, via open issues and PRs (240 closed issues, 50 open issues and 112 closed PRs) -- it is the best project I've reviewd, from this point of view.

  • (+) Development via issues and PRs.

2) Release process

The project has many releases and they seem to be done on a regulat basis. THere also seems to be an automation involved in the process, which adds a new tag in the repository, updates the pom.xml version and some information in the wiki: https://github.com/mafagafogigante/dungeon/blob/master/release.sh

  • (+) Regular releases
  • (+) Automation of some release tasks.

3) Static analysis

The project uses Checkstyle for static analysis check.

  • (+) Static analysis check.

4) Test coverage

Test coverage is calculated and displayed via https://codecov.io. However, it is very low (25%)

  • (-) Very low coverage.

5) Non Stop development

Development iterations seem well documented via milestones set on issues. Also, versioning of the releases is well documented here: https://github.com/mafagafogigante/dungeon#versioning-scheme.

  • (+) Milestones attached to issues

6) Patterns used

This is a desktop application. It is, in fact, a game.

  • (+) The build and run were successful from the first trial (mvn package and run the exec with java -jar)

a) Framework:

Desktop application, UI written with Java Swing.

b) Code:

  • (+) No monster classes -- The only bigger classes I noticed where the entry points (classes Game and GameWindow). The rest seem to be < 150 loc.
  • (+) Javadocs are present on most classes.
  • (-) No interfaces. There are almost no interfaces in the codebase, which I don't like.

7) Documentation

This project is really well documented -- it has both README.md and a wiki. The versioning and build schemes are explained well, and the project ran smoothly on my machine from the first trial. Even the final jar ran fine and the game started. There is also a detailed CONTRIBUTING.md

  • (+) Fine overall documentation of the versioning, build and contributing schemes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment