Enhance the reports of various Clang sanitizers.
What It Is
Please be aware that this software is at the beginning of its life cycle. It produces meaningful output already, yet, every commit might introduce a breaking change without further notice.
The aim of the Enhancitizer is to support the analysis of large projects where Clang's sanitizers produce a vast amount of reports. Whenever a flood of reports can hardly be studied as is, feed them to the Enhancitizer and work with the reprocessed, enhanced output.
Currently, this software is tailored while working with Clang's reports of the Mono runtime.
How To Use It
Using the Enhancitizer is straight forward: make sure that you have logfiles that contain reports of Clang's sanitizers (the more reports the better). Then run something like:
$ python3 enhancitizer /home/root/of/code /home/root/of/output /home/path/of/logfiles
Afterwards, go to
/home/root/of/output and study your program! ;)
Details about the usage can be found in docs/usage.txt or by running
$ python3 enhancitizer (without valid arguments).
What It Does
Different reports ask for different things. Currently, the Enhancitizer supports the following:
|TSan: Data Race||yes||yes||yes||yes||yes|
|TSan: Thread Leak||yes|
Basic: detect unique reports in logfiles and copy them into separate report files
Blacklist: add the functions of the top frames of meaningful stack traces to dedicated blacklists
Context: add source code that is referenced by the top frames of meaningful stack traces into the report files
Skeleton: rebuild a skeleton of the project with all referenced source files and marked reports
Summary: provide meaningful summaries, packed into CSV files
So far, the Enhancitizer is developed on Linux and targets the execution with Python 3. If it works with any other setup, it is pure luck! ;) However, feel free to to add support for other platforms and/or Python 2.