A set of projects, combined together, make DevMine possible. Each of them has its own purpose and as such, the project is very modular.

Most of the projects are implemented in the Go programming language. An early prototype as well as the first version of DevMine were written in Python but all of this code base is now obsolete. DevMine uses PostgreSQL as its database system and this component is essential to glue all sub-projects together.

Current implementation of the DevMine project consists of 11 sub-projects:

Source analysis toolchain architecture

The tools from the source analysis toolchain work much like standard UNIX tools in the sense that, generally speaking:

A schema is probably better at explaining that so here is one:

Source analysis toolchain architecture schema

From the schema, you can deduce that you may omit using some of the tools when running the analysis. However, using all of the tools leads to the most complete source analysis API output.

Out of the source analysis API output, we are able to compute features with featscomp and insert the results into the database. However, srcanlzr does a good job at providing part of the features since it computes things such as the cyclomatic complexity (McCabe) over the source code or counts the lines of code for each projects for instance.

Database schema

The PostgreSQL database is used by crawld, repotool, featscomp and api-server.

Database schema