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
- (+) 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.
"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 withjava -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