2016-03-30 16 views
0

Ich analysiere einige große C++ - Projekte. Die einzige Funktionalität, die ich wirklich brauche, ist das Auffinden von Funktionsaufrufen.C++ - Code analysieren - CSCope

Dafür verwende ich gerade cscope, aber ich entdeckte ein großes Problem - es scheint, dass cscope ist nicht in der Lage, Methoden, z. object.function().

Also, ist es möglich, irgendwie die Einstellungen von cscope zu ändern? Oder, wenn es nicht möglich ist, C++ mit cscope zuverlässig zu parsen, könnten Sie bitte einen anderen Parser empfehlen, der "besser ausgestattet" ist?


Ich verwende cscope so einfach wie möglich, wie folgt aus:

cscope -k -L3importantFunc path_to_some_file 

Ich bin nicht die Datenbank separat zu schaffen, ich denke, es sollte auf diese Weise für eine bestimmte Datei ausreichen.


Ich habe bereits versucht Clang, aber es war nicht viel besser, da es nicht möglich ist, Funktionen in bedingten Kompilation Blöcken eingeschlossen zu suchen.

+0

https://github.com/Andersbakken/rtags –

+2

Als wilde Vermutung, könnte das Problem sein, dass CScope für die Analyse der Sprache C und nicht C++? –

+0

Wenn Sie den Präprozessor vor dem Analysieren über den Quellcode ausführen, müssen Sie sich keine Bedingungsblöcke für den Präprozessor vornehmen. Möchten Sie Funktionsaufrufe in deaktivierten pp bedingten Blöcken finden? Was passiert, wenn der bedingte Block um die Funktionskopfzeile gewickelt wird? Was passiert, wenn es um Teile der Argumentliste gewickelt wird? –

Antwort

0

Ich empfehle das Projekt in (kostenlose Community-Versionen) Visual Studio 2013/2015 zu laden. Es ist so viel besser Navigation/Source-Browsing. Es ist ziemlich schnell im Aufbau & Indizierung des Quellcodes.

https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/

+0

Funktioniert das für GCC/Clang kompatiblen Code? Ich denke nicht. [Welchen Dialekt von C++ hat OP?] Es ist auch nicht klar, dass OP * den Code so sehr navigieren will, dass er eine Liste erstellt. OP sollte uns sagen. –

+0

gcc? Solange es die Standard-C/C++ - Syntax ist, kann es alles analysieren. –

+0

Niemand, den ich kenne, schreibt "Standard" C/C++ - Syntax. Irgendwie schleicht sich irgendwo etwas Dialektes ein. –