[clang] Emit SARIF Diagnostics: Create `clang::SarifDocumentWriter` interface
authorVaibhav Yenamandra <vyenamandra@bloomberg.net>
Mon, 18 Jul 2022 12:36:54 +0000 (08:36 -0400)
committerAaron Ballman <aaron@aaronballman.com>
Mon, 18 Jul 2022 12:37:59 +0000 (08:37 -0400)
commit4b03ad650645e2f74a8824c8f69b095ca321fdfe
tree206db1711dea531a5f2565d93bf6784043f71cbc
parent1e77b0c871a70b6a6e5292fbf1f70350e4f031e6
[clang] Emit SARIF Diagnostics: Create `clang::SarifDocumentWriter` interface

[clang] Emit SARIF Diagnostics: Create clang::SarifDocumentWriter interface

Create an interface for writing SARIF documents from within clang:

The primary intent of this change is to introduce the interface
clang::SarifDocumentWriter, which allows incrementally adding
diagnostic data to a JSON backed document. The proposed interface is
not yet connected to the compiler internals, which will be covered in
future work. As such this change will not change the input/output
interface of clang.

This change also introduces the clang::FullSourceRange type that is
modeled after clang::SourceRange + clang::FullSourceLoc, this is useful
for packaging a pair of clang::SourceLocation objects with their
corresponding SourceManagers.

Previous discussions:

RFC for this change: https://lists.llvm.org/pipermail/cfe-dev/2021-March/067907.html
https://lists.llvm.org/pipermail/cfe-dev/2021-July/068480.html
SARIF Standard (2.1.0):

https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html

Differential Revision: https://reviews.llvm.org/D109701
clang/include/clang/Basic/Sarif.h [new file with mode: 0644]
clang/lib/Basic/CMakeLists.txt
clang/lib/Basic/Sarif.cpp [new file with mode: 0644]
clang/unittests/Basic/CMakeLists.txt
clang/unittests/Basic/SarifTest.cpp [new file with mode: 0644]