/dextool

Suite of C/C++ tooling built on LLVM/Clang written in D

Primary LanguageDOtherNOASSERTION

dextool Build Status codecov

deXtool is a framework for writing plugins using libclang. The main focus is tools for testing and analyze.

The plugins in a standard installation of deXtool are:

  • Analyze. Analyze C/C++ code to generate complexity numbers such as McCabe.
  • C TestDouble. Analyze C code to generate a test double implementation.
  • C++ TestDouble. Analyze C++ code to generate a test double implementation.
  • Compilation Database. Tool for manipulating db(s) such as merge, compiler flag filtering, relative->absolute path. Usually called compile_commands.json.
  • Mutate. Mutation testing tool for C/C++.
  • GraphML. Analyze C/C++ code to generate a GraphML representation. Call chains, type usage, classes as groups of methods and members.
  • Intercept. Analyze a C header together with a config to generate interceptor functions.
  • UML. Analyze C/C++ code to generate PlantUML diagrams.

Plugin Status

"C TestDouble", production ready. The API of the generated code and how it behaves is stable.

"C++ TestDouble" is nearing production quality.

"Mutate" is in alpha phase. Further info

Getting Started

deXtool depends on the following software packages:

deXtool has been tested with libclang [3.9, 4.0, 5.0].

For people running Ubuntu two of the dependencies can be installed via apt-get. The libclang version depend on your ubuntu version.

sudo apt install cmake libclang-3.9-dev libsqlite3-dev

Download the D compiler of your choice, extract it and add to your PATH shell variable.

# example with an extracted DMD
export PATH=/path/to/dmd/linux/bin64/:$PATH

Once the dependencies are installed it is time to download the source code and build the binaries.

git clone https://github.com/joakim-brannstrom/dextool.git
cd dextool
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/where/to/install/dextool/binaries ..
make install -j2

Done! Have fun. Don't be shy to report any issue that you find.

Credit

Jacob Carlborg for his excellent DStep. It was used as a huge inspiration for this code base. Without DStep deXTool wouldn't exist.