You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.5 KiB
87 lines
3.5 KiB
======================= |
|
External Clang Examples |
|
======================= |
|
|
|
Introduction |
|
============ |
|
|
|
This page provides some examples of the kinds of things that people have |
|
done with Clang that might serve as useful guides (or starting points) from |
|
which to develop your own tools. They may be helpful even for something as |
|
banal (but necessary) as how to set up your build to integrate Clang. |
|
|
|
Clang's library-based design is deliberately aimed at facilitating use by |
|
external projects, and we are always interested in improving Clang to |
|
better serve our external users. Some typical categories of applications |
|
where Clang is used are: |
|
|
|
- Static analysis. |
|
- Documentation/cross-reference generation. |
|
|
|
If you know of (or wrote!) a tool or project using Clang, please send an |
|
email to Clang's `development discussion mailing list |
|
<http://lists.llvm.org/mailman/listinfo/cfe-dev>`_ to have it added. |
|
(or if you are already a Clang contributor, feel free to directly commit |
|
additions). Since the primary purpose of this page is to provide examples |
|
that can help developers, generally they must have code available. |
|
|
|
List of projects and tools |
|
========================== |
|
|
|
`<https://github.com/Andersbakken/rtags/>`_ |
|
"RTags is a client/server application that indexes c/c++ code and keeps |
|
a persistent in-memory database of references, symbolnames, completions |
|
etc." |
|
|
|
`<http://rprichard.github.com/sourceweb/>`_ |
|
"A C/C++ source code indexer and navigator" |
|
|
|
`<https://github.com/etaoins/qconnectlint>`_ |
|
"qconnectlint is a Clang tool for statically verifying the consistency |
|
of signal and slot connections made with Qt's ``QObject::connect``." |
|
|
|
`<https://github.com/woboq/woboq_codebrowser>`_ |
|
"The Woboq Code Browser is a web-based code browser for C/C++ projects. |
|
Check out `<http://code.woboq.org/>`_ for an example!" |
|
|
|
`<https://github.com/mozilla/dxr>`_ |
|
"DXR is a source code cross-reference tool that uses static analysis |
|
data collected by instrumented compilers." |
|
|
|
`<https://github.com/eschulte/clang-mutate>`_ |
|
"This tool performs a number of operations on C-language source files." |
|
|
|
`<https://github.com/gmarpons/Crisp>`_ |
|
"A coding rule validation add-on for LLVM/clang. Crisp rules are written |
|
in Prolog. A high-level declarative DSL to easily write new rules is under |
|
development. It will be called CRISP, an acronym for *Coding Rules in |
|
Sugared Prolog*." |
|
|
|
`<https://github.com/drothlis/clang-ctags>`_ |
|
"Generate tag file for C++ source code." |
|
|
|
`<https://github.com/exclipy/clang_indexer>`_ |
|
"This is an indexer for C and C++ based on the libclang library." |
|
|
|
`<https://github.com/holtgrewe/linty>`_ |
|
"Linty - C/C++ Style Checking with Python & libclang." |
|
|
|
`<https://github.com/axw/cmonster>`_ |
|
"cmonster is a Python wrapper for the Clang C++ parser." |
|
|
|
`<https://github.com/rizsotto/Constantine>`_ |
|
"Constantine is a toy project to learn how to write clang plugin. |
|
Implements pseudo const analysis. Generates warnings about variables, |
|
which were declared without const qualifier." |
|
|
|
`<https://github.com/jessevdk/cldoc>`_ |
|
"cldoc is a Clang based documentation generator for C and C++. |
|
cldoc tries to solve the issue of writing C/C++ software documentation |
|
with a modern, non-intrusive and robust approach." |
|
|
|
`<https://github.com/AlexDenisov/ToyClangPlugin>`_ |
|
"The simplest Clang plugin implementing a semantic check for Objective-C. |
|
This example shows how to use the ``DiagnosticsEngine`` (emit warnings, |
|
errors, fixit hints). See also `<http://l.rw.rw/clang_plugin>`_ for |
|
step-by-step instructions." |
|
|
|
|