Existe-t-il des navigateurs sources de style CScope pour d'autres langues que le C / C ++ sous Windows?

StackOverflow https://stackoverflow.com/questions/65456

  •  09-06-2019
  •  | 
  •  

Question

Je suis particulièrement intéressé par les outils pouvant être connectés à Vim pour permettre la navigation dans les sources de style CScope (1 à 2 commandes de frappe permettant de localiser les définitions de fonctions, les appelants, les symboles globaux, etc.) pour des langages autres que le C / C ++, tels que Java et C # (puisque Vim et Cscope s’intègrent déjà très bien pour naviguer en C / C ++). Les outils basés sur l'EDI ne m'intéressent pas car je sais que Microsoft et d'autres éditeurs s'adressent déjà à cet espace. Je préfère utiliser Vim pour l'édition et la navigation, mais je ne connais pas d'outils pour C # et / ou Java qui me permettent de même pouvoir que CScope.

La réponse originale à cette question incluait un pointeur sur l'application CSWrapper qui corrige apparemment un bogue rencontré par certains utilisateurs lors de l'intégration de Vim et de CScope. Cependant, mon installation de Vim / CScope fonctionne bien; J'essaie simplement d'étendre la fonctionnalité pour permettre à Vim de modifier du code dans d'autres langues.

Était-ce utile?

La solution

CScope fonctionne pour Java.

De http://cscope.sourceforge.net/cscope_vim_tutorial.html :

  

Bien que Cscope fût à l’origine uniquement destiné à être utilisé avec du code C, c’est   en fait un outil très flexible qui fonctionne bien avec des langages tels que C ++   et Java. Vous pouvez le considérer comme une base de données générique 'grep', avec le   capacité à reconnaître certaines constructions supplémentaires comme les appels de fonction   et définitions variables. Par défaut, Cscope n’analyse que C, Lex et   yacc (.c, .h, .l, .y) dans le répertoire en cours (et   sous-répertoires, si vous passez le drapeau -R), et il n'y a actuellement aucun moyen   pour changer cette liste d'extensions de fichiers (oui, nous devrions changer cela).   Donc, au lieu de cela, vous devez faire une liste des fichiers que vous voulez   parser et appeler cela 'cscope.files' (vous pouvez l'appeler comme vous voulez   si vous appelez 'cscope -i foofile'). Un moyen facile (et très flexible) de   Pour ce faire, utilisez la commande 'trouver' d’Unix:

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

Maintenant, lancez 'cscope -b' pour reconstruire la base de données (le -b construit simplement le   base de données sans lancer l’interface graphique Cscope), et vous pourrez   parcourir tous les symboles dans vos fichiers Java. Apparemment, il y a des gens   là-bas en utilisant Cscope pour parcourir et éditer de grands volumes de   fichiers de documentation, qui montrent à quel point l’analyseur Cscope est flexible.

Autres conseils

Il est extrêmement difficile d'affirmer que Cscope prend en charge Java. Il semble traiter une méthode comme une fonction, de sorte qu'il n'a aucune idée que A.foo (), A.foo (Object) et B.foo () sont tous différents. C'est un gros problème avec une base de code volumineuse (y compris des bibliothèques tierces) avec plusieurs méthodes portant le même nom. (Je n'ai pas regardé la source Cscope, mais c'est ce que j'ai trouvé en essayant la dernière version de Cscope, version 15.7a-3.3 de Debian unstable.)

J’ai essayé Cscope sur un grand projet Java et cela ne m’a pas du tout été utile en raison de cette limitation. Il est regrettable que nous ne puissions pas obtenir une réponse rapide à une question de base telle que "qui appelle cette méthode", qui utilise un logiciel libre en dehors des grands IDE, mais nous pouvons tout aussi bien l'accepter. (J'adorerais si je me trompais. Je recoure à des hacks, comme commenter la méthode et la recompiler.)

Un peu tard pour la fête ici, mais mon https://github.com/eapache/starscope/ project fournit un cadre intéressant pour la génération de bases de données cscope pour plusieurs langues. Actuellement, il prend en charge Ruby and Go, et Javascript est en cours. Ajouter Java / C # ne devrait pas être si difficile.

Modifier: Javascript est désormais entièrement pris en charge.

Je suis d'accord avec Andrew. Essayer d'obtenir une hiérarchie d'appels pour une méthode renvoie tous les appels du même nom, même s'ils appartiennent à une classe différente.

Vous pouvez utiliser Eclim pour connecter Eclipse à VIM

http://eclim.org/

quels supporteurs appellent la hiérarchie

http://eclim.org/vim/java/inspection.html# hiérarchie des appels

C'est peut-être ce que vous cherchez:

http://www.vim.org/scripts/script.php ? script_id = 1783

Vous pouvez également imiter certaines fonctionnalités de CScope dans votre propre fichier .vimrc en utilisant les différentes variantes de carte .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top