<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Argyrios, thanks for the archeological insight! I wouldn't have
    guessed :)<br>
    <br>
    Hmm, what if we make analyzer options verified by default, but have
    such verification disabled by a flag (eg.
    `-analyzer-config-compatibility-mode`) that's enabled by default
    *by* the Clang Driver?<br>
    <br>
    Analyzer GUIs/wrappers usually work through the Driver by appending
    `--analyze` to the build command. It might look like scan-build is
    an exception as it runs `clang -cc1` directly, but before that it
    anyway dumps the default driver flags by running appending
    `--analyze -###` to the (modified) build command. So this might be
    both safe for backward/forward compatibility purposes *and* helpful
    for developers.<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 10/17/18 12:57 PM, Kristóf Umann via
      cfe-dev wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAGcXOD5t5DT0ebMRAP6+AZiNnFHMXzLZdLos8NH6GV28+sZmVA@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="auto">
        <div dir="ltr">+ Dániel Krupp</div>
        <div dir="ltr"><br>
        </div>
        <div dir="ltr">Another idea I was thinking is </div>
        <div dir="ltr"><br>
        </div>
        <div dir="ltr">1. To be able to dump all analyzer configs in a
          JSON (or yaml, whatever) file, and similarly, be able to read
          such a config file.</div>
        <div dir="ltr"><br>
        </div>
        <div dir="ltr">2. The use of Optional is impactical. We lazily
          evaluate every option the user supplied only when is asked
          for. Instead, we could do the evaluation when the cmd line
          options are parsed, at which point we can also check for wrong
          input (like whether string options have typos, or flag X won't
          do a thing when flag Y isn't set) since we have access to a
          DiagnosticsEngine.</div>
        <div dir="ltr"><br>
        </div>
        <div dir="ltr">3. Remove getBooleanOption, getOptionAsString,
          etc, and only provide general option getters for checkers, in
          order to support shared lib checkers. This would force anyone
          who'd like add a flag to actually register it properly. I'm
          already trying to come up a neat solution to neatly handle
          checker options.</div>
        <div dir="auto"><br>
        </div>
        I've wasted more time on making a typos in config flags than I'd
        like to admit, so I'm super motivated to make a much stricter
        version of AnalyzerOptions. While keeping backward
        compatibility, of course.
        <div dir="auto"><br>
        </div>
        <div dir="auto">
          <div class="gmail_quote" dir="auto">
            <div dir="ltr">Argyrios Kyrtzidis <<a
                href="mailto:akyrtzi@gmail.com" target="_blank"
                moz-do-not-send="true">akyrtzi@gmail.com</a>> ezt
              írta (időpont: 2018. okt. 13., Szo, 0:45):<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div
                style="word-wrap:break-word;line-break:after-white-space"><br>
                <div><br>
                  <blockquote type="cite">
                    <div>On Oct 7, 2018, at 11:26 AM, Kristóf Umann via
                      cfe-dev <<a
                        href="mailto:cfe-dev@lists.llvm.org"
                        target="_blank" moz-do-not-send="true">cfe-dev@lists.llvm.org</a>>
                      wrote:</div>
                    <br
class="m_7345783068551837146m_-4343576601425936917Apple-interchange-newline">
                    <div>
                      <div dir="ltr">
                        <div dir="ltr">
                          <div dir="ltr">
                            <div dir="ltr">Hi!<br>
                              <br>
                              I have two questions about this topic.</div>
                            <div dir="ltr"><br>
                            </div>
                            <div dir="ltr">1. Checker registration:<br>
                              <br>
                              I am in the process of updating <a
                                href="http://clang-analyzer.llvm.org/"
                                target="_blank" moz-do-not-send="true">clang-analyzer.llvm.org</a>,
                              and as I went through the checkers that
                              were missing, I encountered this:</div>
                            <div dir="ltr">
                              <div dir="ltr"><br>
                              </div>
                              <div dir="ltr"><font face="monospace,
                                  monospace">def
                                  NonnullGlobalConstantsChecker:
                                  Checker<"<wbr>NonnilStringConstants">,</font></div>
                              <div dir="ltr"><font face="monospace,
                                  monospace">  HelpText<"Assume that
                                  const string-like globals are
                                  non-null">,</font></div>
                              <div dir="ltr"><font face="monospace,
                                  monospace">  DescFile<"<wbr>NonilStringConstantsChecker.<wbr>cpp">;</font></div>
                            </div>
                            <div dir="ltr"><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px;white-space:pre-wrap">
</span></div>
                            <div><font face="arial, helvetica,
                                sans-serif" color="#24292e"><span style="font-size:12px;white-space:pre-wrap">What is particularly interesting here (other than the mismatched names), is that </span></font><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px;white-space:pre-wrap">NonilStringConstantsChecker.<wbr>cpp </span><span style="color:rgb(36,41,46);font-size:12px;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">doesn't exist, in fact it never did. To my greatest surprise, DescFile isn't used anywhere!</font></span></div>
                            <div><font face="monospace, monospace"
                                color="#24292e"><span style="font-size:12px;white-space:pre-wrap">
</span></font></div>
                            <div><font face="monospace, monospace"
                                color="#24292e"><span style="font-size:12px;white-space:pre-wrap">#define CHECKER(FULLNAME,CLASS,<wbr>DESCFILE,HELPTEXT,GROUPINDEX,<wbr>HIDDEN)    \
  registry.addChecker(register##<wbr>CLASS, FULLNAME, HELPTEXT);</span></font>
                            </div>
                            <div><span style="color:rgb(36,41,46);font-size:12px;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">
</font></span></div>
                            <div><font face="arial, helvetica,
                                sans-serif" color="#24292e"><span style="font-size:12px;white-space:pre-wrap">So, is there a point in keeping DescFile entries?</span></font></div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                  <div><br>
                  </div>
                  <div>Just to give some context for ‘<span style="white-space:pre-wrap;color:rgb(36,41,46);font-family:arial,helvetica,sans-serif">DescFile'</span>,
                    the intention of this was to point to a file that we
                    could use to add detailed documentation for a
                    checker with a specific format, think of something
                    like extensive doxygen documentation, and a tool
                    would be able to extract such detailed documentation
                    from the source files and render them in another
                    format, like html pages for <span
                      style="text-decoration:underline"><font
                        color="#3586ff"><span><a
                            href="http://clang-analyzer.llvm.org"
                            target="_blank" moz-do-not-send="true">clang-analyzer.llvm.org</a></span></font><font
                        color="#453ccc"><span>.</span></font></span></div>
                  <div><br>
                  </div>
                  <div>However, this never materialized and it’s useless
                    now.</div>
                </div>
              </div>
            </blockquote>
          </div>
          <div dir="auto">Thanks! That actually sounds neat, we had a
            few conversations in the office about auto-generating the
            website, like clang-tidy, so I'm not a hurry to remove these
            just yet.</div>
          <div class="gmail_quote" dir="auto">
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div
                style="word-wrap:break-word;line-break:after-white-space">
                <div><br>
                  <blockquote type="cite">
                    <div>
                      <div dir="ltr">
                        <div dir="ltr">
                          <div dir="ltr">
                            <div><font face="arial, helvetica,
                                sans-serif" color="#24292e"><span style="font-size:12px;white-space:pre-wrap">
</span></font></div>
                            <div><font face="arial, helvetica,
                                sans-serif" color="#24292e"><span style="font-size:12px;white-space:pre-wrap">2. Use tblgen for AnalyzerOptions:</span></font></div>
                            <div><font face="arial, helvetica,
                                sans-serif" color="#24292e"><span style="font-size:12px;white-space:pre-wrap">
</span></font></div>
                            <div><font color="#24292e"><span style="font-size:12px;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">I dislike that I need to look at source code, or doxygen at best to know what kind </font><font face="monospace, monospace">-analyzer-config </font><font face="arial, helvetica, sans-serif">options are </font></span></font><font
                                face="arial, helvetica, sans-serif"
                                color="#24292e"><span style="font-size:12px;white-space:pre-wrap">available. Would it be a good idea for me to refactor it with tblgen?</span></font></div>
                            <div><font face="arial, helvetica,
                                sans-serif" color="#24292e"><span style="font-size:12px;white-space:pre-wrap">
</span></font></div>
                            <div><font face="arial, helvetica,
                                sans-serif" color="#24292e"><span style="font-size:12px;white-space:pre-wrap">Cheers,</span></font></div>
                            <div>Kristóf</div>
                          </div>
                        </div>
                      </div>
                      ______________________________<wbr>_________________<br>
                      cfe-dev mailing list<br>
                      <a href="mailto:cfe-dev@lists.llvm.org"
                        target="_blank" moz-do-not-send="true">cfe-dev@lists.llvm.org</a><br>
                      <a
                        href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
                        target="_blank" moz-do-not-send="true">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
                    </div>
                  </blockquote>
                </div>
                <br>
              </div>
            </blockquote>
          </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>