2016-03-30 23 views
0

Bazı büyük C++ projelerini analiz ediyorum. Gerçekten ihtiyacım olan tek işlev, işlev çağrılarını bulmak.Ayrıştırma C++ kodu - CSCope

Bunun için şu anda cscope kullanıyorum, ama büyük bir sorun keşfettim - öyle görünüyor ki, cscope, örn. object.function().

Yani, bir şekilde cscope ayarlarının değiştirilmesi mümkün mü? Veya, C++'yi cscope ile uyumlu bir şekilde ayrıştırmak mümkün değilse, lütfen "daha iyi donanımlı" başka bir ayrıştırıcıyı önerebilir misiniz?


Böyle yanı basitçe mümkün olduğunca cscope kullanıyorum:

cscope -k -L3importantFunc path_to_some_file 

ayrı ayrı veritabanı oluşturarak değilim, ben belirli bir dosya için bu şekilde yeterli olması gerektiğini düşünüyorum.


Zaten clang denedim ama koşullu-derleme bloklar halinde kapalı fonksiyonlar için bakmak mümkün değildir çünkü, çok daha iyi değildi.

+0

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

+2

vahşi bir tahmin olarak, konu cscope C C dili ayrıştırma değil içindir ki olabilir ++? –

+0

Önişlemciyi ayrıştırmadan önce kaynak kod üzerinde çalıştırırsanız, endişelenmeniz gereken bir önişlemci koşullu engellemeniz yoktur. Engelli pp koşullu bloklarının içinde işlev çağrıları bulmak ister misiniz? Koşullu blok, işlev üstbilgi satırının etrafına sarılırsa ne olur? Ya argüman listesinin bölümleri etrafına sarılırsa? –

cevap

0

Projeyi (ücretsiz topluluk sürümleri) Visual Studio 2013/2015'e yüklemenizi öneririm. Çok daha iyi gezinme/kaynak tarama özelliği var. Kaynak kodunu indekslemek & binasında oldukça hızlı.

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

+0

Bu GCC/Clang uyumlu kod için çalışıyor mu? Ben öyle düşünmüyorum. [Hangi C++ lehçesinin OP'si var?] Ayrıca, OP'nin * bir liste yapmak için çok fazla gezinmek istediği de net değil. OP bize söylemeli. –

+0

gcc? Standart C/C++ sözdizimi olduğu sürece tümünü ayrıştırır. –

+0

Hiç kimse "standart" C/C++ sözdizimi yazdığını bilmiyorum. Her nasılsa diyalektiğe özgü bir şey her zaman bir yerlerde ürkek olur. –