<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>