Codeface is a framework for analysing the technical and social evolution of software projects.
Motivated to analyse software development processes in large-scale software projects, Codeface mines data from version control systems (VCS), developer communication channels and static dependencies to gain insights into developer collaboration and communication as well as software quality.
You can read more about Codeface's motivation on its website.
We recommend to set up Codeface with Docker.
If Docker is not yet installed on your system, please consult its installation instructions.
-
Clone this repository
-
Build the Docker image from the Dockerfile in your local repository (this may take up to an hour)
docker build -t codeface . -
Run a Docker container from your
codefaceimagedocker run --name codeface -d -t --user codeface codefaceOptionally, you can export the MySQL database port (3306) to your host system or share data and source code between your host system and the container. Please consult the
docker rundocumentation for details.
-
Log in to your Docker container
docker exec -it codeface bash -
Run an example analysis of the QEMU processor emulator (this may take several hours).
cd /home/codeface/codeface && ./analysis_example.sh -
Verify the results in the local
codefacedatabase (user and passwordcodeface) and in the result directory (/home/codeface/res).
Codeface supports several analysis modes which can be used for your custom analyses. Each analysis mode is reflected by a command in Codeface's CLI.
The standard analysis bundles a set of analyses which can be run on each git repository.
Codeface analyses software evolution in time windows. It parses commits from the repository and stores them in a local database. Codeface constructs the developer collaboration network on the fly. Based on the results, it detects communities, summarises structural project trends and estimates development efforts over time.
-
Provide the Git repository of the software project of choice, for example using
git clone. -
Create a project configuration file in the
conffolder. The existing configuration files may serve as a reference. -
Run the standard analysis using the
codeface runcommand.A
codeface runcommand takes the following form:codeface run [OPTIONS] -c [TOOL CONF] -p [PROJECT CONF] [RESULT DIR] [GIT DIR]Option Description -c,--configCodeface configuration file (codeface.conf) -p,--projectProject configuration file -l,--loglevelLog level. Can be one of debug,devinfo,info,warning,error.-f,--logfileOptional log file. -j,--jobsNumber of cores to use in parallel. Default is 1.--recreateForce a delete of the project in the database. --reuse-vcs-analysisRe-use an existing vcs-analysis.db from a previous analysis run. --no-exportSkip LaTeX report generation and dot compilation (local artificats). -
Inspect the results in the local
codefacedatabase (user and passwordcodeface) and in the given result directory.
In large distributed open source software projects, mailing lists are an established means of communication.
This analysis mode parses mails from an existing mail box, analyses frequent subjects and constructs the communication network.
-
Run all standard analyses for the project of choice as described above.
-
Download the mailing list for the project and export it to an
.mboxfile. -
Run the mailing list analysis using the
codeface mlcommand.A
codeface mlcommand takes the following form:codeface ml [OPTIONS] -c [TOOL CONF] -p [PROJECT CONF] [RESULT DIR] [MAIL DIR]Option Description -c,--configCodeface configuration file (codeface.conf) -p,--projectProject configuration file -l,--loglevelLog level. Can be one of debug,devinfo,info,warning,error.-f,--logfileOptional log file. -j,--jobsNumber of cores to use in parallel. Default is 1.--use-corpusRe-use an existing corpus file from a previous analysis run. -
Inspect the results in the local
codefacedatabase (user and passwordcodeface) and in the given result directory.