<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<br>
<br>
<div class="moz-cite-prefix">On 12/10/18 8:57 AM, Kristóf Umann via
cfe-dev wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAGcXOD7K+CvTp1ssgSeWUeDZwW_TFssHU_0dGBoCzL9Mx2+93A@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">Hi all!<br>
<br>
This mail is a heads up for out-of-tree
checker developers that I'm planning to land a
variety of changes to how checker registration
works. Also, I already commited some changes
to make the command line interface a little
less annoying. While I will properly document
most of these in some form or another with a
file in the actual repo, I'll leave about a
week for everyone to raise objections.
<div><br>
</div>
<div>===--- Checker registration ---===</div>
<div><br>
</div>
<div>Registering more than one checker in a
registry function leads to multiple checkers
receiving the same name. The solution was to
reimplement parts on the checker
registration process.</div>
<div><br>
</div>
<div>1. From now, all checkers should have a
corresponding <font face="monospace,
monospace">shouldRegister##CHECKERNAME</font>
function defined, similar to <font
face="monospace, monospace">register##CHECKERNAME</font>.
The intent here is that once a registry
function is called, it should register the
checker. If based on some language options
you chose not to register your checker
within <font face="monospace, monospace">register##CHECKERNAME</font>,
please move all such conditions to the new
function.</div>
<div><a href="https://reviews.llvm.org/D55424"
moz-do-not-send="true">https://reviews.llvm.org/D55424</a><br>
</div>
<div><br>
</div>
<div>2. A registry function is no longer
allowed to register more then one checker.
Also, <font face="monospace, monospace">CheckerManager::registerChecker<CHECKER></font>
may only be called once per checker. If you
intend to acquire a checker object within a
registry function (for example, if it merely
enables extension to the main checker),
please use <font face="monospace,
monospace">CheckerManager::getChecker<CHECKER></font>.
You can ensure that the checker you'd like
to acquire is already registered by adding
it as a dependency via <font
face="monospace, monospace">CheckerRegistry::addDependency</font>.</div>
<div><a href="https://reviews.llvm.org/D54438"
moz-do-not-send="true">https://reviews.llvm.org/D54438</a><br>
</div>
<div><a href="https://reviews.llvm.org/D55429"
moz-do-not-send="true">https://reviews.llvm.org/D55429</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
Aren't we doing dependencies via Checkers.td?<br>
<br>
<br>
<blockquote type="cite"
cite="mid:CAGcXOD7K+CvTp1ssgSeWUeDZwW_TFssHU_0dGBoCzL9Mx2+93A@mail.gmail.com">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div><br>
</div>
<div>3. <font face="monospace, monospace">CheckerRegistry</font>
was moved from the <font face="monospace,
monospace">Core</font> directory to <font
face="monospace, monospace">Frontend</font>.<br>
</div>
<div><a href="https://reviews.llvm.org/D54436"
moz-do-not-send="true">https://reviews.llvm.org/D54436</a><br>
</div>
<div><br>
</div>
<div>===--- Command line interface ---===</div>
<div><br>
</div>
<div>Mainly focusing on <font
face="monospace, monospace">-analyzer-config</font>
options, it was an ancient and annoying
issue that any invalid input would be
ignored and the analyzer simply didn't do
what you want -- this is changing. Please
note that most of these have already landed.</div>
<div><br>
</div>
<div>1. <font face="monospace, monospace">AnalyzerOptions</font>
no longer supports adding non-checker
options without modifying the actual
implementation, which can be done by writing
a new entry in <font face="monospace,
monospace">AnalyzerOptions.def</font>.</div>
<div><a href="https://reviews.llvm.org/D53483"
moz-do-not-send="true">https://reviews.llvm.org/D53483</a><br>
</div>
<div><br>
</div>
<div>2. There is a new <font face="monospace,
monospace">-analyzer-config-help</font>
flag to list all non-checker configurations.</div>
<div><a href="https://reviews.llvm.org/D53296"
moz-do-not-send="true">https://reviews.llvm.org/D53296</a><br>
</div>
<div><br>
</div>
<div>3. A new flag was added that will emit a
warning on almost any invalid <font
face="monospace, monospace">-analyzer-config</font>
input, called <font face="monospace,
monospace">-analyzer-config-compatibility-mode</font>.
When the analyzer is invoked with <font
face="monospace, monospace">-analyze</font>
(in driver mode, I'm unsure about the
correct terminology), it will be set to
false by default, but will be enabled with
-cc1 (in frontend mode). You may enable this
feature in the driver mode via
-Xclang analyzer-config-compatibility-mode=true.</div>
<div><a href="https://reviews.llvm.org/D53280"
moz-do-not-send="true">https://reviews.llvm.org/D53280</a><br>
</div>
<div><br>
</div>
<div>4. Similar plans are already in motion to
make checker options similarly strict.</div>
<div><br>
</div>
<div>Cheers,</div>
<div>Kristóf Umann</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
cfe-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a>
</pre>
</blockquote>
<br>
</body>
</html>