Gibt es CScope-Stil Source-Browser für andere Sprachen außer C / C ++ unter Windows?
-
09-06-2019 - |
Frage
Ich bin speziell interessiert an Werkzeugen, die in Vim eingesteckt werden können CScope-Stil Quelle-Browsing (1-2 Tastendruck Befehle Funktionsdefinitionen, Anrufer zu lokalisieren, globale Symbole usw.) für Sprachen außer C / C ++ wie zu ermöglichen, Java und C # (seit Vim und Cscope bereits sehr gut für C / C ++ Browsing integrieren). Ich bin nicht daran interessiert, IDE-basierten Tools da ich weiß, Microsoft und anderen Anbietern bereits, dass der Raum adressieren - ziehe ich Vim für die Bearbeitung und das Surfen zu verwenden, aber, wissen aber nicht von Tools für C # und / oder Java, die mir geben die gleiche Leistung wie CScope.
Die ursprüngliche Antwort auf diese Frage enthalten einen Zeiger auf die CSWrapper Anwendung, die offenbar behebt einen Fehler, der einige Benutzer Integration Vim und CScope erleben. Aber meine Vim / CScope Installation funktioniert gut; Ich versuche nur, um die Funktionalität zu erweitern Vim zu ermöglichen, mithilfe von Code in anderen Sprachen bearbeiten.
Lösung
CScope funktioniert für Java.
http://cscope.sourceforge.net/cscope_vim_tutorial.html :
Obwohl Cscope ursprünglich nur für mit C-Code Gebrauch bestimmt wurde, ist es eigentlich ein sehr flexibles Werkzeug, das gut mit Sprachen wie C ++ funktioniert und Java. Sie können als eine generische Datenbank ‚grep‘ daran denken, mit der Fähigkeit, bestimmte zusätzliche Konstrukte wie Funktionsaufrufe zu erkennen und Variablendefinitionen. Standardmäßig Cscope parst nur C, lex, und yacc-Dateien (.c, .h, .l, .y) im aktuellen Verzeichnis (und Verzeichnisse, wenn Sie den R-Flag übergeben), und es gibt derzeit keine Möglichkeit, dass die Liste der Dateierweiterungen ändern (ja, wir sollten das ändern). Anstatt also müssen Sie eine Liste der Dateien, die Sie wollen analysieren, und nennen es ‚cscope.files‘ (Sie können es nennen, was Sie wollen wenn Sie rufen 'cscope -i foofile'). Eine einfache (und sehr flexibel) Art und Weise zu dies tut, ist über den bewährten Unix ‚find‘ Befehl:
find . -name '*.java' > cscope.files
Jetzt ‚cscope -b‘ ausführen, um die Datenbank neu zu erstellen (die -b nur baut die Datenbank, ohne die Cscope GUI) zu starten, und Sie werden in der Lage sein durchsuchen alle Symbole in Ihre Java-Dateien. Offenbar gibt es Leute da draußen Cscope mit durchsuchen und bearbeiten große Mengen an Dokumentationsdateien, die zeigt, wie flexibel Cscope des Parsers ist.
Andere Tipps
Die Behauptung, dass Cscope unterstützt Java eine extreme Dehnung ist. Es scheint, ein Verfahren wie eine Funktion zu behandeln, so hat es keine Ahnung, dass A.foo (), A.foo (Object) und B.foo () alle verschieden sind. Dies ist ein großes Problem mit einer großen Code-Basis (einschließlich Bibliotheken von Drittanbietern) mit vielen gleich genannten Methoden. (Ich habe nicht an der Cscope Quelle gesucht, aber das ist, was ich fand die letzte Cscope, Version versuchte 15.7A-3.3 von Debian unstable).
Ich habe versucht Cscope auf einem großen Java-Projekt, und es war mir nicht nützlich aufgrund dieser Einschränkung. Es ist traurig, dass wir nicht eine schnelle Antwort auf eine grundlegende Frage wie „wer ruft diese Methode“, mit freier Software außerhalb des großen IDEs bekommen können, aber wir können es auch akzeptieren. (Ich würde es lieben, wenn ich falsch. Ich Hacks greifen wie die Methode zu kommentieren und neu zu kompilieren.)
Ein bisschen spät zur Party hier, aber meine https://github.com/eapache/starscope/ Projekt bietet für die Erzeugung cscope Datenbanken für mehr Sprachen einen schönen Rahmen. Derzeit unterstützt es Ruby und Go und Javascript ist in Arbeit. Java / C # Hinzufügen sollte nicht so schwierig.
Edit:. Javascript ist nun vollständig unterstützt
ich mit Andrew zustimmen -. Versuche, eine Aufrufhierarchie für eine Methode, um wieder alle Anrufe mit dem gleichen Namen, auch wenn sie von einer anderen Klasse ist
Sie können Eclim verwenden Eclipse-in VIM-Stecker
, die Aufrufhierarchie supportrs
Dies kann sein, was Sie suchen:
http://www.vim.org/scripts/script.php ? script_id = 1783
Sie können auch mit den verschiedenen Geschmacksrichtungen von einige CScope Funktionalität in Ihrer eigenen .vimrc Datei imitieren Karte .