2010-11-10 3 views
8

Existe-t-il un moyen rapide de trouver tout le code commenté sur les fichiers Java dans Eclipse? Toute option dans la recherche, peut-être, ou tout add-on qui peut le faire?Recherche de code commenté à travers les fichiers dans Eclipse

Il devrait être capable de trouver seulement le code qui est commenté, mais pas les commentaires ordinaires.

+0

Je doute que vous trouverez quelque chose comme ça. Comme indiqué, il pourrait y avoir un plugin qui le fait, mais aucun que j'ai rencontré. –

+2

Votre question n'est pas claire. Trouver des commentaires est facile: recherchez "/ *" ou "//". Et puisque les commentaires n'ont pas de relation formelle avec le code, quand est-ce qu'un commentaire "sur" le code à proximité, et quand est-ce juste un commentaire ("un sonnet à ...")? Qu'est-ce que tu veux vraiment faire? –

+1

Je pense qu'il veut trouver le code qui est commenté, pas le code qui a un commentaire. – Jorn

Répondre

-1

Vous pouvez effectuer une recherche dans Eclipse.

Tout ce que vous devez rechercher est /* et //

Cependant, vous trouverez les fichiers qui contiennent cette expression, et non pas le contenu réel que je crois que vous êtes après.

Cependant, si vous utilisez Linux, vous pouvez facilement obtenir tous les commentaires avec un seul doublure.

+0

Vous voulez partager le même paquebot? –

0

@Jorn dit:

Je pense que [l'OP] veut trouver le code qui est commenté, pas de code qui a un commentaire.

Si l'intention est de trouver en commentaire le code, alors je ne pense pas qu'il soit possible en général. Le problème est qu'il est impossible de distinguer entre les commentaires qui ont été écrits en code ou en pseudo-code, et le code qui est mis en commentaire. Faire cette distinction requiert l'intelligence humaine.

Maintenant, les EDI ont généralement une fonction «basculer les commentaires» qui commente le code d'une manière particulière. Il serait possible d'écrire un outil/plugin qui correspond au style produit par un IDE particulier . Mais cela n'est probablement pas suffisant, d'autant plus que le reformatage du code supprime généralement les caractéristiques qui ont rendu le code commenté reconnaissable.

+0

Pourquoi le vote à la baisse? –

1

Vous pouvez marquer votre propre code commenté avec une étiquette de tâche. Vous pouvez créer vos propres tags de tâche dans Eclipse.

Dans le menu, allez dans Fenêtre -> Préférences. Dans la boîte de dialogue Préférences, allez à Général -> Editeurs -> Editeurs de texte structuré -> Balises de tâche.

Ajoutez un tag de tâche approprié, tel que COMMENTED. Définissez la priorité sur Faible. Ensuite, tout code que vous commentez, vous pouvez marquer avec la marque de tâche COMMENTED. Une liste de ces balises de tâche, ainsi que leur emplacement, apparaît dans la vue Tâches.

0

Si le problème consiste à trouver du code commenté, il est nécessaire de trouver des commentaires et de décider si un commentaire peut contenir du code.

Une manière simple de faire ceci est de rechercher un commentaire qui contient des choses semblables à du code. Je serais tenté de chasser pour des commentaires contenant un ";" caractère (ou un autre indicateur rare tel que "="); il sera assez difficile d'avoir un code commenté intéressant qui ne contient pas cela et dans mon expérience avec les commentaires, je ne vois pas beaucoup de gens qui écrivent qui contiennent cela. Une recherche d'expression rationnelle pour ceci devrait être assez simple, même si elle a ramassé quelques faux positifs supplémentaires (par exemple // dans un littéral de chaîne).

Une manière plus sophistiquée d'y parvenir consiste à utiliser un lexeur ou un analyseur Java.Si vous avez un lexer qui renvoie des commentaires sur les jetons (ce qui n'est pas le cas de tous, les compilateurs Java ne s'intéressent pas aux commentaires), vous pouvez simplement analyser les lexèmes pour un commentaire et effectuer la vérification des points-virgules ci-dessus. Vous n'obtiendrez aucun résultat positif faux pour le commentaire comme les choses dans les littéraux de chaîne avec cette approche.

Si vous avez un analyseur de réingénierie qui capture des commentaires dans le cadre de l'AST (comme notre SD Java Front End), vous pouvez mécaniquement analyser l'arbre d'analyse syntaxique des commentaires, nourrir le contexte de commentaire retour à l'analyseur à voir si le contenu est de type code, et signaler tout ce qui passe ce test modulo un certain taux d'erreur de taille-depedent (10 erreurs dans 15 caractères implique "vraiment un commentaire"). Maintenant, le test de type "code" nécessite l'analyseur de réingénierie être prêt à reconnaître sous-chaîne du langage (Java). Notre DMS Software Reengineering Toolkit sous-jacent au Java Front End peut en fait le faire, en utilisant l'accès à la grammaire enterrée dans le front end, car il est prêt à commencer une analyse pour tout langage (non) terminal, et cette question est "pouvez-vous trouver un séquuité des (non) terminaux qui consomment la chaîne? ".

Les approches lexer et parser sont respectivement de petites et grandes masses. Si OP ne le fait qu'une seule fois, il peut s'en tenir à la recherche manuelle de regex. Si le problème est de vérifier la base de code à plusieurs reprises (nécessaire dans les grandes organisations), il voudrait un outil qui peut être exécuté sur une base régulière.

16

Dans Eclipse, je viens de faire une recherche de fichier avec la case d'expression régulière activée:

(/\*.*;.*\*/)|(//.*;) 

Il trouvera des points-virgules dans

// Ces ;

et/* ces; */

Fonctionne pour moi.

+1

C'est un bon début, même si tt pourrait donner des faux positifs comme String s = "http : // some.site "; –

+1

Pour éviter les faux positifs des urls, j'utilise '/\*.*;.*\*/ | [^:] //.*; |^//. *;', Qui // ne doit pas venir après un: – KevinL

+2

@KevinL, je ne pense pas que cela fonctionnera avec les URL de la forme 'fichier: /// somefile' –

Questions connexes