[cfe-dev] clang-tidy/clang-query issues

Andre-Marcel Hellmund via cfe-dev cfe-dev at lists.llvm.org
Mon Jul 11 16:11:48 PDT 2016


Hi Aaron, Hi Manuel,

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

Regarding the second issue with incorrect AST matches, this is the 
reduced C++ code structure out of a larger C++ header file:

[...] many class definitions [...]

class RoadLink {
public:
     [...]
private:
     std::vector<int64_t> precedingRoads_;
     std::vector<int64_t> succeedingRoads_;
};

class Road {
public:
     [...]
     std::vector<LaneSectionPtr>::const_iterator sectionsBegin() const {
         return sections_.cbegin();
     }


private:
     int64_t roadID_;
     std::vector<LaneSectionPtr> sections_;
     RoadLink roadLink_;
     const odd::RoadDescriptor* roadDesc_;
}

class MetaData {
public:
     [...]
private:
     double xMin_;
     double xMax_;
     double yMin_;
     double yMax_;
};

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:

| |-CXXRecordDecl 0x9c7b668 prev 0x9c6bac0 <line:492:1, line:531:1> 
line:492:7 referenced invalid class Road definition
| | |-AccessSpecDecl 0x9c7b7e8 <line:493:1, col:7> col:1 public
| | |-FieldDecl 0x9c7bff0 <line:510:32, col:34> col:34 invalid 
const_iterator 'int'
| | |-FieldDecl 0x9c7c048 <line:528:33> col:33 invalid sections_ 'int'
| | |-FieldDecl 0x9c7c0a0 <line:529:5, col:14> col:14 invalid roadLink_ 
'class opendrive::RoadLink'
| | `-FieldDecl 0x9c7c140 <line:530:5, col:32> col:32 roadDesc_ 'const 
odd::RoadDescriptor *'

So, I see a few errors in this AST:

1. The AccessSpecDecl 'private' is missing in this class, while it is 
available preceding and succeeding class
2. The const_iterator from line 510 (Function: sectionsBegin()) is added 
as a field decl while it is a type of the std::vector.

BTW, the AST dump was generated by clang-3.9 (ToT, last week).

Do you have any idea what could be wrong here?

Thanks,
Andi




On 07.07.2016 14:39, Manuel Klimek wrote:
> On Thu, Jul 7, 2016 at 8:31 AM Andre-Marcel Hellmund via cfe-dev 
> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>
>     Hi Clang-Guys,
>
>     I recently started to look into the clang-tools to enforce coding
>     guidelines for our development group. Therefore, I played around with
>     clang-tidy and clang-format (version 3.8 and trunk from Monday),
>     however
>     ran into a two problems. Before I dive deeper into the code details of
>     both tools, I would like to check with you for known issues or hints.
>
>     1) While the compilation of the code using CMake (ninja) works fine,
>     loading the same code via clang-tidy (and the compilation database)
>     results in an error that a header, omp.h, could not be found. Is
>     this a
>     known bug for clang-tidy or might this be caused by a defect in CMake?
>
>
> This is really hard to diagnose without more info.
>
>     2) Performing a simple AST match (reduced from the clang-tidy check
>     'readability-identifier-naming'), that is,
>
>     fieldDecl(isPublic()).bind("public_member")
>
>     results in incorrect matches meaning that privately declared
>     members or
>     public type definitions of std containers like const_iterator are
>     matched. Interestingly, I was not yet able to reproduce those errors
>     with simplified test cases. Are there some known issues with the AST
>     matchers that could fit my description?
>
>
> 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.
>
>
>     Thank you for your help and support in advance,
>     Andi
>     _______________________________________________
>     cfe-dev mailing list
>     cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>

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

hellmund at fzi.de
www.fzi.de/mitarbeiter/hellmund
.........................................................
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
.........................................................

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160712/42c8b0b8/attachment.html>


More information about the cfe-dev mailing list