CodeReview is a Python 3 / Qt5 GUI to perform code review on files and Git repositories.
CodeReview Home Page is located at http://fabricesalvaire.github.io/CodeReview
Authored by Fabrice Salvaire.
I started to write some pieces of code of CodeReview at the end of 2011, as a port of the Bzr Qt plugin QBzr for Git when Bzr started to seriously fall down. I am an addict of code review and I cannot work without it. QBzr features two nice tools for this task: qlog and qdiff. It was the main reason why I used Bzr until 2015 and didn’t switched to Git before this date. But I succeed to release an alternative.
The aim of CodeReview is to provide tools for code review tasks, like to show the difference between two versions. However I am not a fan of GUI softwares that aim to deal with Git with only a mouse and one finger. Thus CodeReview is not intended to compete with a “power” IDE like eclipse, idea, pycharm, kate … But just to provide features not available in Emacs and Magit Mode (my editor) or github like a diff side-by-side on local changes.
CodeReview is written in Python 3 and the GUI is based on the Qt5 framework. The libgit2 and pygit2 provides the Python API to deal with Git repositories. I tried to achieve a clever design and to write a clean code.
The main features of CodeReview are:
- display and browse the log and paches of a Git repository
- diff side by side using Patience algorithm
- watch for file system changes
Diff viewer features:
- stage/unstage file
- number of context lines
- font size
- line number mode
- align mode
- complete mode
- highlight mode
Ideas for Additional Features
Actually CodeReview has a limited number of features. The followings list gives some ideas to extend its features:
- Add Mercurial support. (Git and Mercurial are actually the most cool VCS)
- Add a graphical representation of the branches. I don’t understand the crappy code of qlog and I don’t know any algorithm on this topic (graphviz, qgit ?). To summarize I don’t what and how to do.
- Implement the detection of code translocations. Sometimes we move code within a file or a project. Such changes are related as deletion and addition in the code, which don’t help to review code. We can do something clever by computing a distance between all the added and deleted chuncks. The distance could be computed using a Levenshtein, Damerau–Levenshtein, Needleman–Wunsch or Smith–Waterman algorithm (DNA alignment algorithms).
- Implement code analyser/validator as language plugins. The idea is to annotate change as cosmetic or dangerous modifications. For example a deleted or added space is a cosmetic change in C, but it can be a regression in Python where the indentation is part of the grammar.
- Implement blame wich is another important feature.
- Implement comments and maybe as a client-server architecture.
- look https://docs.python.org/3.4/library/difflib.html
CodeReview requires some dependencies wich are easier to install on a Linux distribution.
CodeReview requires the following dependencies:
Theses packages are available via pip:
For development, you will need in addition:
Installation from PyPi Repository
Run this command to install the last release:
pip install CodeReview
Installation from Source
CodeReview source code is hosted at https://github.com/FabriceSalvaire/CodeReview
To clone the Git repository, run this command in a terminal:
git clone email@example.com:FabriceSalvaire/CodeReview.git
Then to build and install CodeReview run these commands:
python setup.py build python setup.py install
How to use CodeReview ?
CodeReview provides to executable pyqgit and diff-viewer.