Become a sponsor to László Nagy
In short
Earlier I created a tool to build compilation database for Clang tools. My plan is to extend this tool to generate a semantic description of a build and provide more details how the build was done. This will fix a few long standing issues with the tool, but give more functionality too.
In details
The tool I'm talking about is Bear, which is now written in C and Python. It captures the executed processes command lines (with pre-loading mechanism of the dynamic linker) and creates a JSON file.
Would like to extend the capture mechanism to use compiler wrappers and ptrace
, besides the existing library pre-load technique. And capture not only the process creation, but also supervise the execution and get the exit codes of the processes.
Since the current output format contains only compiler calls with specific fields, the extra information are not represented. My plan to come up with an output format which can contains all details that the tool is capturing.
Targeted use cases
The two relevant changes are the new capture techniques and the new output format. These will allow to support the following use cases:
- Support the existing compilation database creation.
- Cover more scenarios where the build tools are statically linked, or have security restrictions, etc..
- Allow to control the output format in details. Like use relative paths to in the compilation description.
- Support to merge two independent project build results. And if the projects are dependent on each other, make the file dependencies unique. This will allow to run static analyser across multiple modules, even from multiple projects.
- The verbose output contains time information, therefore give the users an opportunity to profile their build process.
- The verbose output might be annotate the process executions, that can be used to migrate from one build tool to another. Even better, this process can be automated and conversion tools can aid the migration process.
Featured work
-
rizsotto/Bear
Bear is a tool that generates a compilation database for clang tooling.
C++ 5,009 -
rizsotto/Constantine
A plugin for Clang compiler
C++ 115 -
rizsotto/scan-build
Clang's scan-build re-implementation in python
Python 362 -
rizsotto/Grldd
Haskell learning project.
Haskell 2 -
rizsotto/workingontologist
Code examples for http://workingontologist.org/
Shell -
rizsotto/json_compilation_db
Rust crate to read/write JSON compilation database file.
Rust 3