2008-09-15 18 views
14

Özellikle VC gibi C/C++ gibi diller için CScope tarzı kaynak taramasına izin vermek için (1-2 tuş vuruşu komutları, işlev tanımlarını, arayanları, genel sembolleri ve benzerlerini bulmak için) Vim'e takılabilen araçlarla ilgileniyorum. ve C# (Vim ve Cscope zaten C/C++ taraması için çok iyi bir şekilde bütünleştiğinden). Microsoft ve diğer satıcıların zaten bu alana hitap ettiğini bildiğimden beri IDE tabanlı araçlarla ilgilenmiyorum - Düzenleme ve göz atma için Vim'i kullanmayı tercih ediyorum ancak C# ve/veya Java için bana yardımcı olan araçları bilmiyorum CScope ile aynı güç.Windows'da C/C++ dışında başka diller için CScope tarzı kaynak tarayıcıları var mı?

Bu sorunun orijinal yanıtında, bazı kullanıcıların tümleşik Vim ve CScope'ları deneyimlediği bir hatayı açıkça gideren CSWrapper uygulamasına yönelik bir işaretçi yer alıyordu. Ancak, Vim/CScope kurulumum iyi çalışıyor; Vim kullanmanın diğer dillerdeki kodu düzenlemesine izin vermek için işlevselliği genişletmeye çalışıyorum.

+0

Python için: http://stackoverflow.com/questions/3718868/using-cscope-to-browse-python-code-with-vim – idbrii

cevap

3

CScope, Java için çalışır. http://cscope.sourceforge.net/cscope_vim_tutorial.html itibaren

: cscope başlangıçta yalnızca C kodu ile kullanılmak üzere tasarlanmıştır rağmen

, aslında C++ ve Java gibi diller ile iyi çalışır çok esnek bir araç bu. işlev çağrıları ve değişken tanımları gibi belirli ek yapıları tanıma yeteneği ile genel bir 'grep' veritabanı olarak düşünebilirsiniz. Varsayılan olarak Cscope, geçerli dizinde yalnızca C, lex ve yacc dosyalarını (.c, .h, .l, .y) ayrıştırır (-R bayrağını geçirirseniz alt dizinleri) ve şu anda hiçbir şekilde Dosya uzantılarının listesini değiştirmek için (evet, bunu değiştirmeliyiz). Bu nedenle, ayrıştırmak istediğiniz dosyaların bir listesini yapmak ve 'cscope.files' olarak adlandırmanız gerekir ('cscope -i foofile' çağırırsanız, istediğiniz her şeyi çağırabilirsiniz).

find . -name '*.java' > cscope.files 

Şimdi veritabanı (-b sadece kurar yeniden inşa etmek için 'cscope -b' çalıştırın: Bunu yapmak kolay bir (ve çok esnek) yolu güvenilir Unix 'Bul' komutu kullanılarak olduğu Cscope GUI'yi başlatmadan veritabanı ve Java dosyalarınızdaki tüm sembollere göz atabilirsiniz. Görünüşe göre, Cscope'un ayrıştırıcısının ne kadar esnek olduğunu gösteren büyük miktarda dokümantasyon dosyalarına göz atmak ve düzenlemek için orada Cscope'u kullanan millet vardır.

5

Cscope'un Java'yı desteklediğini iddia etmek aşırı bir esnektir. Bir fonksiyon gibi bir yöntem gibi görünüyor, bu yüzden A.foo(), A.foo (Object) ve B.foo() 'nın hepsinin farklı olduğu hakkında hiçbir fikri yok. Bu, aynı adlandırılmış yöntemlerle büyük bir kod tabanı (üçüncü taraf kitaplıkları dahil) ile büyük bir sorundur. (Cscope kaynağına bakmadım, fakat bu, en son Cscope'u denediğimde, Debian kararsız sürümü 15.7a-3.3'ü bulduğum şeydir.)

Büyük bir Java projesinde Cscope'u denedim; Bu sınırlama nedeniyle hepsi benim için yararlı.Büyük IDE'lerin dışındaki özgür yazılımı kullanarak "bu yönteme kimin çağıracağı" gibi basit bir soruyu cevaplayamayız, ama kabul edebiliriz. (Yanılıyorsam onu ​​seviyorum. Yöntemi yorumlama ve yeniden derleme gibi kesmelere başvuruyorum.)

0

Andrew ile aynı fikirdeyim - bir yöntem için bir çağrı hiyerarşisi almaya çalışmak, aynı adda tüm çağrıları döndürür Farklı bir sınıftan olsalar bile.

Sen VIM içine Eclipse takmak için eclim kullanabilirsiniz çağrı hiyerarşi

http://eclim.org/vim/java/inspection.html#call-hierarchy

3

supportrs

http://eclim.org/

Geç burada partiye biraz, ama benim https://github.com/eapache/starscope/ proje güzel sağlar Daha fazla dil için cscope veri tabanları oluşturmak için çerçeve. Şu anda Ruby ve Go'yu destekliyor ve Javascript devam ediyor. Java/C# eklemek çok zor olmamalı.

Düzenleme: Javascript artık tam olarak destekleniyor.

+0

Teşekkürler, bir göz atacağız! –