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.
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. –
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ć? –
Myślę, że chce znaleźć kod, który jest skomentowany, a nie kod, który ma komentarz. – Jorn