[clang] Emit SARIF Diagnostics: Create `clang::SarifDocumentWriter` interface
authorVaibhav Yenamandra <vyenamandra@bloomberg.net>
Thu, 30 Jun 2022 17:23:15 +0000 (13:23 -0400)
committerAaron Ballman <aaron@aaronballman.com>
Thu, 30 Jun 2022 17:23:15 +0000 (13:23 -0400)
commit329fae7103d355e728cc326a0a9abef889ccc577
tree4fcbe447b2a07d8c2141ddac28c1db852e91bdf7
parentc4960f6363c43a35851d1565b7fe96926ed82722
[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]