<div dir="ltr">I sadly won't be able to dedicate enough time to overcome some hurdles that stop me from commiting these things before the creation of the 8.0 branch, so it'll only land in the next major release.</div><br><div class="gmail_quote"><div dir="ltr">Kristóf Umann <<a href="mailto:dkszelethus@gmail.com">dkszelethus@gmail.com</a>> ezt írta (időpont: 2018. dec. 10., H, 22:08):<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div>Sorry for the spam, hit send too early :/ when loading an external plugin, you can register your checkers with the supplied CheckerRegistry object, and my target audience was developers of external plugins, for example, us in Ericsson.</div><div dir="auto"><br></div><div dir="auto">I guess for developers working here on the official repo, visiting the phabricator links or waiting for me to get together that documentation would be the best course of action :)<br><br><div class="gmail_quote" dir="auto"><div dir="ltr">On Mon, 10 Dec 2018, 22:00 Kristóf Umann <<a href="mailto:dkszelethus@gmail.com" target="_blank">dkszelethus@gmail.com</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr">On Mon, 10 Dec 2018, 21:58 Artem Dergachev <<a href="mailto:noqnoqneo@gmail.com" rel="noreferrer" target="_blank">noqnoqneo@gmail.com</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF">
    <br>
    <br>
    <div class="gmail-m_-8998704603907371733m_2636385153323527338m_-4336266704086387967moz-cite-prefix">On 12/10/18 8:57 AM, Kristóf Umann via
      cfe-dev wrote:<br>
    </div>
    <blockquote type="cite">
      
      <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" rel="noreferrer noreferrer" target="_blank">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" rel="noreferrer noreferrer" target="_blank">https://reviews.llvm.org/D54438</a><br>
                          </div>
                          <div><a href="https://reviews.llvm.org/D55429" rel="noreferrer noreferrer" target="_blank">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></div></blockquote></div></div><div dir="auto">I should've been more clear: in the official repo yes, and I guess using the same method out-of-tree is the easiest solution, but essentially this is what happening under the hood.</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF"><br>
    <blockquote type="cite">
      <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" rel="noreferrer noreferrer" target="_blank">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" rel="noreferrer noreferrer" target="_blank">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" rel="noreferrer noreferrer" target="_blank">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" rel="noreferrer noreferrer" target="_blank">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="gmail-m_-8998704603907371733m_2636385153323527338m_-4336266704086387967mimeAttachmentHeader"></fieldset>
      <pre class="gmail-m_-8998704603907371733m_2636385153323527338m_-4336266704086387967moz-quote-pre">_______________________________________________
cfe-dev mailing list
<a class="gmail-m_-8998704603907371733m_2636385153323527338m_-4336266704086387967moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org" rel="noreferrer noreferrer" target="_blank">cfe-dev@lists.llvm.org</a>
<a class="gmail-m_-8998704603907371733m_2636385153323527338m_-4336266704086387967moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a>
</pre>
    </blockquote>
    <br>
  </div>

</blockquote></div></div></div>
</blockquote></div></div></div>
</blockquote></div>