<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Manuel,<br>
    <br>
    thanks for your hints about clang-check and specifically the
    'invalid' tag. Checking the headers again solved my problems!<br>
    <br>
    Andi<br>
    <br>
    <div class="moz-cite-prefix">On 12.07.2016 06:05, Manuel Klimek
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAOsfVvmuXMwOVBAzmDgnwTa-2z+n9MnYHsG=+=-AxjUAzNrv2w@mail.gmail.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <p dir="ltr">Use clang-check to do the ast dump otherwise you have
        to specify the full command line. The 'invalid' in your dump
        indicates that there were parse errors, most likely due to
        headers that clang didn't find.</p>
      <br>
      <div class="gmail_quote">
        <div dir="ltr">On Tue, Jul 12, 2016, 1:12 AM Andre-Marcel
          Hellmund <<a moz-do-not-send="true"
            href="mailto:hellmund@fzi.de">hellmund@fzi.de</a>> wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div bgcolor="#FFFFFF" text="#000000"> Hi Aaron, Hi Manuel,<br>
            <br>
            thank you for your prompt reply and sorry for my belated
            response! Regarding the header omp.h, I meanwhile figured
            out that my clang-3.8 installation (from the official
            apt-repo) does not include the omp.h header file. If I add
            the omp.h from gcc, the error is gone, while others appear.
            But this is not your problem. :-D<br>
            <br>
            Regarding the second issue with incorrect AST matches, this
            is the reduced C++ code structure out of a larger C++ header
            file:<br>
            <br>
            [...] many class definitions [...]<br>
            <br>
            class RoadLink {<br>
            public:<br>
                [...]   <br>
            private:<br>
                std::vector<int64_t> precedingRoads_;<br>
                std::vector<int64_t> succeedingRoads_;<br>
            };<br>
            <br>
            class Road {<br>
            public:<br>
                [...]<br>
                std::vector<LaneSectionPtr>::const_iterator
            sectionsBegin() const {<br>
                    return sections_.cbegin();<br>
                }<br>
            <br>
                <br>
            private:<br>
                int64_t roadID_;<br>
                std::vector<LaneSectionPtr> sections_;<br>
                RoadLink roadLink_;<br>
                const odd::RoadDescriptor* roadDesc_;<br>
            }<br>
            <br>
            class MetaData {<br>
            public:<br>
                [...]<br>
            private:<br>
                double xMin_;<br>
                double xMax_;<br>
                double yMin_;<br>
                double yMax_;<br>
            };<br>
            <br>
            When I run the clang-query matcher, I get sections_ and
            roadLink_ as public field decls for class Road. The private
            members of the class before and after the class 'Road' are
            correctly matched. If I look at the ast-dump for the class
            Road, I see the following shortened dump:<br>
            <br>
            | |-CXXRecordDecl 0x9c7b668 prev 0x9c6bac0 <line:492:1,
            line:531:1> line:492:7 referenced invalid class Road
            definition<br>
            | | |-AccessSpecDecl 0x9c7b7e8 <line:493:1, col:7>
            col:1 public<br>
            | | |-FieldDecl 0x9c7bff0 <line:510:32, col:34> col:34
            invalid const_iterator 'int'<br>
            | | |-FieldDecl 0x9c7c048 <line:528:33> col:33 invalid
            sections_ 'int'<br>
            | | |-FieldDecl 0x9c7c0a0 <line:529:5, col:14> col:14
            invalid roadLink_ 'class opendrive::RoadLink'<br>
            | | `-FieldDecl 0x9c7c140 <line:530:5, col:32> col:32
            roadDesc_ 'const odd::RoadDescriptor *'<br>
            <br>
            So, I see a few errors in this AST:<br>
            <br>
            1. The AccessSpecDecl 'private' is missing in this class,
            while it is available preceding and succeeding class<br>
            2. The const_iterator from line 510 (Function:
            sectionsBegin()) is added as a field decl while it is a type
            of the std::vector. <br>
            <br>
            BTW, the AST dump was generated by clang-3.9 (ToT, last
            week). <br>
            <br>
            Do you have any idea what could be wrong here? <br>
            <br>
            Thanks,<br>
            Andi</div>
          <div bgcolor="#FFFFFF" text="#000000"><br>
            <br>
            <br>
            <br>
            <br>
            <div class="m_-7849682938841864540moz-cite-prefix">On
              07.07.2016 14:39, Manuel Klimek wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">
                <div class="gmail_quote">
                  <div dir="ltr">On Thu, Jul 7, 2016 at 8:31 AM
                    Andre-Marcel Hellmund via cfe-dev <<a
                      moz-do-not-send="true"
                      href="mailto:cfe-dev@lists.llvm.org"
                      target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a></a>>
                    wrote:<br>
                  </div>
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi
                    Clang-Guys,<br>
                    <br>
                    I recently started to look into the clang-tools to
                    enforce coding<br>
                    guidelines for our development group. Therefore, I
                    played around with<br>
                    clang-tidy and clang-format (version 3.8 and trunk
                    from Monday), however<br>
                    ran into a two problems. Before I dive deeper into
                    the code details of<br>
                    both tools, I would like to check with you for known
                    issues or hints.<br>
                    <br>
                    1) While the compilation of the code using CMake
                    (ninja) works fine,<br>
                    loading the same code via clang-tidy (and the
                    compilation database)<br>
                    results in an error that a header, omp.h, could not
                    be found. Is this a<br>
                    known bug for clang-tidy or might this be caused by
                    a defect in CMake?<br>
                  </blockquote>
                  <div><br>
                  </div>
                  <div>This is really hard to diagnose without more
                    info.</div>
                  <div> </div>
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex">
                    2) Performing a simple AST match (reduced from the
                    clang-tidy check<br>
                    'readability-identifier-naming'), that is,<br>
                    <br>
                    fieldDecl(isPublic()).bind("public_member")<br>
                    <br>
                    results in incorrect matches meaning that privately
                    declared members or<br>
                    public type definitions of std containers like
                    const_iterator are<br>
                    matched. Interestingly, I was not yet able to
                    reproduce those errors<br>
                    with simplified test cases. Are there some known
                    issues with the AST<br>
                    matchers that could fit my description?<br>
                  </blockquote>
                  <div><br>
                  </div>
                  <div>The only known issue is that it's often hard to
                    intuitively understand why things are in the AST. It
                    would be great to have a smaller repro of your
                    problem, otherwise it's really hard to help.</div>
                  <div> </div>
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br>
                    Thank you for your help and support in advance,<br>
                    Andi<br>
                    _______________________________________________<br>
                    cfe-dev mailing list<br>
                    <a moz-do-not-send="true"
                      href="mailto:cfe-dev@lists.llvm.org"
                      target="_blank">cfe-dev@lists.llvm.org</a><br>
                    <a moz-do-not-send="true"
                      href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
                      rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
                  </blockquote>
                </div>
              </div>
            </blockquote>
            <br>
          </div>
          <div bgcolor="#FFFFFF" text="#000000">
            <pre class="m_-7849682938841864540moz-signature" cols="72">-- 
.........................................................
André-Marcel Hellmund, M.Sc.
Wissenschaftlicher Mitarbeiter | Scientific Researcher
Mobile Perception Systems

FZI Forschungszentrum Informatik
Haid-und-Neu-Str. 10–14 
76131 Karlsruhe, Germany

Tel.: +49 721 608-47146
Fax: +49 721 661874

<a moz-do-not-send="true" class="m_-7849682938841864540moz-txt-link-abbreviated" href="mailto:hellmund@fzi.de" target="_blank">hellmund@fzi.de</a>
<a moz-do-not-send="true" class="m_-7849682938841864540moz-txt-link-abbreviated" href="http://www.fzi.de/mitarbeiter/hellmund" target="_blank">www.fzi.de/mitarbeiter/hellmund</a>
.........................................................
FZI Forschungszentrum Informatik am Karlsruher Institut für Technologie
Stiftung des bürgerlichen Rechts
Stiftung Az: 14-0563.1 Regierungspräsidium Karlsruhe
Vorstand: Prof. Dr. Andreas Oberweis, Prof. Dr. Ralf Reussner, 
Jan Wiesenberger, Prof. Dr.-Ing. J. Marius Zöllner
Vorsitzender des Kuratoriums: Ministerialdirigent Günther Leßnerkraus
.........................................................</pre>
          </div>
        </blockquote>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
.........................................................
André-Marcel Hellmund, M.Sc.
Wissenschaftlicher Mitarbeiter | Scientific Researcher
Mobile Perception Systems

FZI Forschungszentrum Informatik
Haid-und-Neu-Str. 10–14 
76131 Karlsruhe, Germany

Tel.: +49 721 608-47146
Fax: +49 721 661874

<a class="moz-txt-link-abbreviated" href="mailto:hellmund@fzi.de">hellmund@fzi.de</a>
<a class="moz-txt-link-abbreviated" href="http://www.fzi.de/mitarbeiter/hellmund">www.fzi.de/mitarbeiter/hellmund</a>
.........................................................
FZI Forschungszentrum Informatik am Karlsruher Institut für Technologie
Stiftung des bürgerlichen Rechts
Stiftung Az: 14-0563.1 Regierungspräsidium Karlsruhe
Vorstand: Prof. Dr. Andreas Oberweis, Prof. Dr. Ralf Reussner, 
Jan Wiesenberger, Prof. Dr.-Ing. J. Marius Zöllner
Vorsitzender des Kuratoriums: Ministerialdirigent Günther Leßnerkraus
.........................................................</pre>
  </body>
</html>