/CodeReview

CodeReview is a Git GUI tool to perform code review written in Python3 and Qt5.

Primary LanguagePython

CodeReview

The official CodeReview home page is located at http://fabricesalvaire.github.io/CodeReview

The latest documentation built from the git repository is available at readthedocs.org CodeReview@readthedocs-badge

Written by Fabrice Salvaire.

CodeReview build status @travis-ci.org

https://raw.github.com/FabriceSalvaire/CodeReview/master/doc/sphinx/source/images/code-review-log.png

https://raw.github.com/FabriceSalvaire/CodeReview/master/doc/sphinx/source/images/code-review-diff.png


Introduction

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, qlog and qdiff for this task. It was the main reason why I am still using Bzr in 2015. But now 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 any GUI that aims 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 (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 a Python API to deal with Git repositories. I tried to achieve a clever design and to write a clean code.

Features

The main features of CodeReview are:

  • display and browse the log and paches of a Git repository
  • diff side by side using Patience algorithm

Diff viewer features:

  • 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

Installation

CodeReview requires some dependencies wich are easier to install on a Linux distribution.

Dependencies

CodeReview requires the following dependencies:

Theses packages are available via pip:

For development, you will need in addition:

Installation from PyPi Repository

CodeReview is made available on the PyPI repository at https://pypi.python.org/pypi/CodeReview

Run this command to install the last release:

pip install CodeReview

Installation from Source

The CodeReview source code is hosted at https://github.com/FabriceSalvaire/CodeReview

To clone the Git repository, run this command in a terminal:

git clone git@github.com:FabriceSalvaire/CodeReview.git

Then to build and install CodeReview run these commands:

python setup.py build
python setup.py install