2010-11-10 16 views
8

Czy można szybko znaleźć cały skomentowany kod w plikach Java w środowisku Eclipse? Dowolna opcja w Search, być może, lub dowolny dodatek, który może to zrobić?Wyszukaj skomentowany kod w plikach w Eclipse

Powinien być w stanie znaleźć tylko kod, który jest skomentowany, ale nie zwykłe komentarze.

+0

Wątpię, że znajdziesz coś takiego. Jak już wspomniano, może istnieć wtyczka, która to robi, ale żadna, z którą się zetknąłem. –

+2

Twoje pytanie nie jest jasne. Wyszukiwanie komentarzy jest łatwe: wyszukaj "/ *" lub "//". A ponieważ komentarze nie mają formalnego związku z kodem, kiedy jest komentarz "o" kodzie w pobliżu, a kiedy jest to tylko komentarz ("sonet do ...")? Co tak naprawdę chcesz robić? –

+1

Myślę, że chce znaleźć kod, który jest skomentowany, a nie kod, który ma komentarz. – Jorn

Odpowiedz

-1

Możesz wyszukać w Eclipse.

Wszystko, czego potrzebujesz, aby szukać jest /* i //

jednak znajdziesz tylko pliki, które zawierają że wypowiedzi, a nie rzeczywista zawartość, która wierzę, jesteś po.

Jeśli jednak używasz Linux, możesz łatwo uzyskać wszystkie komentarze za pomocą jednej linijki.

+0

Chcesz się podzielić jednym linerem? –

0

@Jorn powiedział:

myślę [PO] chce, aby znaleźć kod, który jest komentarzem, a nie kod, który ma komentarza.

Jeśli intencją jest, aby znaleźć wykomentowane kod, to nie sądzę, że jest to możliwe w ogóle. Problem polega na tym, że nie można odróżnić komentarzy napisanych jako kod lub pseudokod i kodu, który jest skomentowany. Dokonanie tego rozróżnienia wymaga ludzkiej inteligencji.

Teraz IDE zwykle mają funkcję "przełącz komentarze", która komentuje kod w określony sposób. Byłoby możliwe napisanie narzędzia/wtyczki pasującej do stylu wyprodukowanego przez konkretny IDE . Ale to prawdopodobnie nie jest wystarczająco dobre, zwłaszcza, że ​​ponowne formatowanie kodu zazwyczaj pozbawia cechy, dzięki którym rozpoznawalny kod jest rozpoznawalny.

+0

Dlaczego głosowanie w dół? –

1

Możesz oznaczyć swój skomentowany kod znacznikiem zadania. Możesz tworzyć własne tagi zadań w Eclipse.

Z menu przejdź do Okno -> Preferencje. W oknie dialogowym Preferencje przejdź do Ogólne -> Edytory -> Edytory tekstu strukturalnego -> Tagi zadań.

Dodaj odpowiednią etykietę zadania, np. KOMENTARZ. Ustaw priorytet na Niski.

Następnie dowolny kod, który skomentowałeś, możesz oznaczyć za pomocą tagu zadania COMEDED. Lista tych znaczników zadań wraz z ich lokalizacjami pojawi się w widoku Zadania.

0

Jeśli problem polega na znalezieniu skomentowanego kodu, potrzebny jest sposób na znajdowanie komentarzy i sposób decydowania, czy komentarz może zawierać kod.

Prostym sposobem na to jest wyszukiwanie komentarza zawierającego elementy podobne do kodu. Byłbym skłonny polować na komentarze zawierające ";" znak (lub jakiś inny rzadki wskaźnik, taki jak "="); trudno będzie mieć jakiś interesujący skomentowany kod, który nie zawiera tego, i w moim doświadczeniu z komentarzami, nie widzę wielu osób, które piszą, że zawierają to. Wyszukiwanie regexp powinno być całkiem proste, nawet jeśli wykryło kilka dodatkowych fałszywych alarmów (np. // w literale łańcuchowym).

Bardziej wyrafinowanym sposobem na osiągnięcie tego celu jest użycie lexera Java lub parsera.Jeśli masz lexer, który zwraca komentarze na tokenach (nie wszystkie z nich robią, kompilatory Java nie są zainteresowane komentarzami), to możesz po prostu zeskanować leksemów komentarz i wykonać test średnika, który opisałem powyżej. Nie dostaniesz żadnych wyników fałszywie pozytywnych dla komentarzy, takich jak rzeczy w literałach ciągów z tym podejściem.

Jeśli masz parser re-engineering który przechwytuje komentarze w ramach AST (takie jak nasze SD Java Front End) można mechanicznie zeskanować drzewo przetwarza na komentarze, karmić kontekst komentarz z powrotem do parsera do zobacz, czy treść jest podobna do kodu, i zgłoś każdy, który przejdzie przez ten moduł modulo, jakikolwiek wskaźnik błędu zależny od rozmiaru: (10 błędów na 15 znaków implikuje "naprawdę jest komentarzem"). Teraz test "podobny do kodu" wymaga parsera przebudowy, który zechce rozpoznać dowolny język podciągu języka (Java). Nasz DMS Software Reengineering Toolkit pod Java Front End może to zrobić, korzystając z dostępu do gramatyki ukrytej w przednim końcu, ponieważ jest gotowy do rozpoczęcia analizy dla dowolnego języka (nie) terminalu, , a to pytanie brzmi "czy możesz znaleźć sekwencja (nie) terminali zużywających ciąg? ".

Podejście lexer i parser to odpowiednio małe i duże młoty. Jeśli OP zrobi to tylko raz, może trzymać się ręcznego wyszukiwania regex. Jeśli problem polega na wielokrotnym sprawdzaniu bazy kodu (potrzebnej w dużych organizacjach), chciałby mieć narzędzie, które może być uruchamiane regularnie.

16

W Eclipse, po prostu zrobić wyszukiwanie plików z regularną wyboru ekspresji włączone:

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

znajdzie średników w

// Te ;

i/* te; */

Działa u mnie.

+1

To dobry początek, nawet jeśli tt może dać fałszywe alarmy takie jak String s = "http : // some.site "; –

+1

Aby uniknąć fałszywych alarmów z adresów URL, używam '/\*.*;.*\*/ | [^:] //.*; |^//. *;', Który wymaga, aby // nie przychodził po: – KevinL

+2

@KevinL, nie sądzę, że będzie działać z adresami URL w postaci 'file: /// somefile' –