mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-11 04:06:20 +00:00
[analyzer][docs][NFC] Fix some broken links and some cosmetic changes
- We should report bugs to the GitHub Issues - We should advocate using Discourse instead of the superseded cfe-dev mailing list. There are a couple of other cosmetic changes such as preferring `using` instead of `typedef` and quoting the `-analyze-function` parameter's payload for escaping the braces. Thanks @loic-joly-sonarsource for reporting this on Discord! Reviewed By: NoQ, Szelethus Differential Revision: https://reviews.llvm.org/D119245
This commit is contained in:
parent
36cae4299d
commit
5e0be95fce
@ -27,8 +27,9 @@ checker, should check out the Building a Checker in 24 Hours talk
|
||||
and refer to this page for additional information on writing a checker. The static analyzer is a
|
||||
part of the Clang project, so consult <a href="https://clang.llvm.org/hacking.html">Hacking on Clang</a>
|
||||
and <a href="https://llvm.org/docs/ProgrammersManual.html">LLVM Programmer's Manual</a>
|
||||
for developer guidelines and send your questions and proposals to
|
||||
<a href=https://lists.llvm.org/mailman/listinfo/cfe-dev>cfe-dev mailing list</a>.
|
||||
for developer guidelines and post your questions and proposals to the
|
||||
<a href="https://discourse.llvm.org/c/clang/static-analyzer/"> Static Analyzer</a> subcategory at
|
||||
the official <a href="https://discourse.llvm.org/"> LLVM Discourse server</a>.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
@ -245,7 +246,7 @@ values (e.g., the number 1).
|
||||
solver to model symbolic execution.</li>
|
||||
|
||||
<li>Consult the <a
|
||||
href="https://bugs.llvm.org/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=REOPENED&version=trunk&component=Static%20Analyzer&product=clang">Bugzilla database</a>
|
||||
href="https://github.com/llvm/llvm-project/labels/clang%3Astatic%20analyzer">GitHub Issues</a>
|
||||
to get some ideas for new checkers and consider starting with improving/fixing
|
||||
bugs in the existing checkers.</li>
|
||||
</ul>
|
||||
@ -381,17 +382,17 @@ Used when the state information is a single value. The methods available for
|
||||
state types declared with this macro are <tt>get</tt>, <tt>set</tt>, and
|
||||
<tt>remove</tt>.
|
||||
<li><a
|
||||
href="https://clang.llvm.org/doxygen/CheckerContext_8h.html#aa27656fa0ce65b0d9ba12eb3c02e8be9">REGISTER_LIST_WITH_PROGRAMSTATE</a>:
|
||||
href="https://clang.llvm.org/doxygen/ProgramStateTrait_8h.html#aa27656fa0ce65b0d9ba12eb3c02e8be9">REGISTER_LIST_WITH_PROGRAMSTATE</a>:
|
||||
Used when the state information is a list of values. The methods available for
|
||||
state types declared with this macro are <tt>add</tt>, <tt>get</tt>,
|
||||
<tt>remove</tt>, and <tt>contains</tt>.
|
||||
<li><a
|
||||
href="https://clang.llvm.org/doxygen/CheckerContext_8h.html#ad90f9387b94b344eaaf499afec05f4d1">REGISTER_SET_WITH_PROGRAMSTATE</a>:
|
||||
href="https://clang.llvm.org/doxygen/ProgramStateTrait_8h.html#ad90f9387b94b344eaaf499afec05f4d1">REGISTER_SET_WITH_PROGRAMSTATE</a>:
|
||||
Used when the state information is a set of values. The methods available for
|
||||
state types declared with this macro are <tt>add</tt>, <tt>get</tt>,
|
||||
<tt>remove</tt>, and <tt>contains</tt>.
|
||||
<li><a
|
||||
href="https://clang.llvm.org/doxygen/CheckerContext_8h.html#a6d1893bb8c18543337b6c363c1319fcf">REGISTER_MAP_WITH_PROGRAMSTATE</a>:
|
||||
href="https://clang.llvm.org/doxygen/ProgramStateTrait_8h.html#a6d1893bb8c18543337b6c363c1319fcf">REGISTER_MAP_WITH_PROGRAMSTATE</a>:
|
||||
Used when the state information is a map from a key to a value. The methods
|
||||
available for state types declared with this macro are <tt>add</tt>,
|
||||
<tt>set</tt>, <tt>get</tt>, <tt>remove</tt>, and <tt>contains</tt>.
|
||||
@ -447,7 +448,7 @@ templated class. For the <tt>ExampleDataType</tt> example above, the type
|
||||
created would be equivalent to writing the declaration:
|
||||
|
||||
<pre class="code_example">
|
||||
typedef llvm::ImmutableMap<SymbolRef, int> ExampleDataTypeTy;
|
||||
using ExampleDataTypeTy = llvm::ImmutableMap<SymbolRef, int>;
|
||||
</pre>
|
||||
|
||||
<p>These macros will cover a majority of use cases; however, they still have a
|
||||
@ -500,15 +501,15 @@ the program to meaningfully continue after such an error.
|
||||
generated by the checker can be passed to the <tt>BugReport</tt> constructor
|
||||
without additional modification. This <tt>ExplodedNode</tt> will be the one
|
||||
returned by the most recent call to <a
|
||||
href="https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerContext.html#a264f48d97809707049689c37aa35af78">CheckerContext::addTransition</a>.
|
||||
href="https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerContext.html#a9717efea3fbc71523984160ae7ae9d41">CheckerContext::addTransition</a>.
|
||||
If no transition has been performed during the current callback, the checker should call <a
|
||||
href="https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerContext.html#a264f48d97809707049689c37aa35af78">CheckerContext::addTransition()</a>
|
||||
href="https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerContext.html#a9717efea3fbc71523984160ae7ae9d41">CheckerContext::addTransition()</a>
|
||||
and use the returned node for bug reporting.
|
||||
|
||||
<p>If analysis can not continue, then the current state should be transitioned
|
||||
into a so-called <i>sink node</i>, a node from which no further analysis will be
|
||||
performed. This is done by calling the <a
|
||||
href="https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerContext.html#adeea33a5a2bed190210c4a2bb807a6f0">
|
||||
href="https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerContext.html#a249245cdf2384738921f134c8d7d909a">
|
||||
CheckerContext::generateSink</a> function; this function is the same as the
|
||||
<tt>addTransition</tt> function, but marks the state as a sink node. Like
|
||||
<tt>addTransition</tt>, this returns an <tt>ExplodedNode</tt> with the updated
|
||||
@ -516,7 +517,7 @@ state, which can then be passed to the <tt>BugReport</tt> constructor.
|
||||
|
||||
<p>
|
||||
After a <tt>BugReport</tt> is created, it should be passed to the analyzer core
|
||||
by calling <a href = "https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerContext.html#ae7738af2cbfd1d713edec33d3203dff5">CheckerContext::emitReport</a>.
|
||||
by calling <a href="https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerContext.html#af50a9f46f6ea787a2a8e4ad7f86576e7">CheckerContext::emitReport</a>.
|
||||
|
||||
<h2 id=ast>AST Visitors</h2>
|
||||
Some checks might not require path-sensitivity to be effective. Simple AST walk
|
||||
@ -592,7 +593,7 @@ option.</p>
|
||||
C++ functions and methods, Objective-C methods and blocks, e.g.:
|
||||
|
||||
<pre class="code">
|
||||
$ <b>clang -cc1 -analyze -analyzer-checker=core test.cc -analyze-function=foo(int)</b>
|
||||
$ <b>clang -cc1 -analyze -analyzer-checker=core test.cc -analyze-function='foo(int)'</b>
|
||||
</pre>
|
||||
|
||||
The fully qualified name can be found from the
|
||||
@ -786,14 +787,14 @@ Here are some additional resources that are useful when working on the Clang
|
||||
Static Analyzer:
|
||||
|
||||
<ul>
|
||||
<li><a href="http://lcs.ios.ac.cn/~xuzb/canalyze/memmodel.pdf">Xu, Zhongxing &
|
||||
<li><a href="https://lcs.ios.ac.cn/~xzx/memmodel.pdf">Xu, Zhongxing &
|
||||
Kremenek, Ted & Zhang, Jian. (2010). A Memory Model for Static Analysis of C
|
||||
Programs.</a></li>
|
||||
<li><a href="https://github.com/llvm/llvm-project/blob/main/clang/lib/StaticAnalyzer/README.txt">
|
||||
The Clang Static Analyzer README</a></li>
|
||||
<li><a href="https://github.com/llvm/llvm-project/blob/main/clang/docs/analyzer/RegionStore.txt">
|
||||
<li><a href="https://github.com/llvm/llvm-project/blob/main/clang/docs/analyzer/developer-docs/RegionStore.rst">
|
||||
Documentation for how the Store works</a></li>
|
||||
<li><a href="https://github.com/llvm/llvm-project/blob/main/clang/docs/analyzer/IPA.txt">
|
||||
<li><a href="https://github.com/llvm/llvm-project/blob/main/clang/docs/analyzer/developer-docs/IPA.rst">
|
||||
Documentation about inlining</a></li>
|
||||
<li> The "Building a Checker in 24 hours" presentation given at the <a
|
||||
href="https://llvm.org/devmtg/2012-11">November 2012 LLVM Developer's
|
||||
@ -812,11 +813,15 @@ up-to-date documentation about the APIs available in Clang. Relevant entries
|
||||
have been linked throughout this page. Also of use is the
|
||||
<a href="https://llvm.org/doxygen">LLVM doxygen</a>, when dealing with classes
|
||||
from LLVM.</li>
|
||||
<li> The <a href="https://lists.llvm.org/mailman/listinfo/cfe-dev">
|
||||
cfe-dev mailing list</a>. This is the primary mailing list used for
|
||||
discussion of Clang development (including static code analysis). The
|
||||
<a href="https://lists.llvm.org/pipermail/cfe-dev">archive</a> also contains
|
||||
a lot of information.</li>
|
||||
<li>
|
||||
The <a href="https://discourse.llvm.org/c/clang/"> Clang Frontent Discourse site</a>.
|
||||
This is the primary forum discussing ideas and posting questions about Clang development.
|
||||
For posting Clang Static Analyzer specific questions, please visit the
|
||||
<a href="https://discourse.llvm.org/c/clang/static-analyzer/"> Static Analyzer subcategory</a>
|
||||
of the same site. In the past, Static Analyzer discussions took place at the
|
||||
<a href="https://lists.llvm.org/pipermail/cfe-dev/"> cfe-dev</a> mailing list, which is now
|
||||
archived and superseeded by the mentioned Discourse site.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user