---
layout: docs
permalink: /docs/code/dev_analysis/
title: Code analysis
---
Tools that analyze hotspots, memory issues, code coverage, etc
## Cross Platform
### CTest (run tests)
- Install CMake and CTest
- Enable testing when you run CMake (`SC_ENABLE_TESTING=ON`)
- Build the test target (i.e. `make test`)
- On GitHub, PR's are automatically tested with Travis-CI and Appveyor.
## Linux-only
### callgrind (find hotspots)
For best results, install kcachegrind for visualization. Requires KDE.
{% highlight bash %}
valgrind --tool=callgrind bin/p21read_sdai_AP214E3_2010 ../data/ap214e3/as1-oc-214.stp
kcachegrind callgrind.out. #don't use a wildcard if more than one callgrind file exists!
{% endhighlight %}
### massif (find where the most memory is allocated)
Install valgrind, kgraphviewer, massif-visualizer. Install valgrind from
your distro. The other two are probably not available in your distro; in
addition, they require Qt, KDE, and graphviz-dev.
- build kgraphviewer:
{% highlight bash %}
git clone http://anongit.kde.org/kgraphviewer
cd kgraphviewer
mkdir build
cd build
cmake ..
make
sudo make install #this defaults to installing under /usr/local
{% endhighlight %}
- build massif-visualizer:
{% highlight bash %}
git clone http://anongit.kde.org/massif-visualizer
cd massif-visualizer
mkdir build
cd build
cmake .. #after this step, verify that kgraphviewer was found
make
sudo make install #this defaults to installing under /usr/local
{% endhighlight %}
- run massif and visualize:
{% highlight bash %}
valgrind --tool=massif bin/p21read_sdai_AP214E3_2010 ../data/ap214e3/as1-oc-214.stp
massif-visualizer massif.out.
{% endhighlight %}
### lcov/gcov (code coverage)
{% highlight bash %}
ctest -S lcov.cmake
# 30 minutes later, open the resulting html file in a browser
{% endhighlight %}
## Downloads
Output of callgrind, cachegrind, and massif: