2016-01-12 9 views
6

Czy jest możliwe sprawdzenie za pomocą checkstyle, czy projekt java używa w kodzie w pełni kwalifikowanych nazw. Chcemy uniemożliwić kod, taki jak , aby wymusić, że pakiety są zamiast tego importowane.Jak zapobiec w pełni kwalifikowanym nazwom w kodzie Java

Czy są inne narzędzia, które mogą nam w tym pomóc?

+4

Czego można się spodziewać po narzędziu, jeśli występują konflikty nazw klas? – varevarao

+0

Można to sprawdzić za pomocą reguły kontroli importu. Następnie skonfiguruj wtyczkę Maven Checkstyle, aby wszelkie naruszenia nie pozwoliły na kompilację ...? – Codexer

+1

Interesujące pytanie. Ale czy na pewno chcesz to włączyć? Musiałem używać w pełni kwalifikowanych nazw w czasach, gdy mam do czynienia ze starszym kodem i ktoś użył klasy * custom * 'StringUtils'. Biorąc pod uwagę, że klasa "nieadekwatności, kończę używać" StringUtils "Apache Commons w tej klasie, podczas gdy import jest już używany na niestandardowe' StringUtils', a więc moja potrzeba. – entpnerd

Odpowiedz

2

O ile mi wiadomo, Checkstyle nie może tego zrobić. Istnieje jednak reguła PMD o nazwie UnnecessaryFullyQualifiedName, która może być warta obejrzenia. Wtyczki IntelliJ dla PMD istnieją, na przykład QAPlug PMD, które można pobrać bezpłatnie.

Bądź przygotowany, aby zobaczyć wiele fałszywych alarmów. Na przykład nie można odwoływać się do dwóch klas o tej samej prostej nazwie bez pełnej nazwy klasy (np. foo.A i bar.A). Możliwe, że PMD faktycznie sprawdza tę sprawę, może warto spróbować.

+0

Kontrola PMD ostrzega tylko, jeśli jest już zaimportowana forma klasy (myślę, że porównuje importowane i w pełni kwalifikowane nazwy w kodzie), więc nie ma zbyt wielu fałszywych alarmów, ale nie ostrzega, jeśli w pełni kwalifikowana klasa nie jest wymieniono jeszcze w imporcie. Rozróżnianie wielkości liter w zapytaniu, takie jak [az] + [.] [Az] + [.] [AZ], może pomóc złapać niektóre z nie importowanych, ale ten z pewnością będzie miał fałszywe pozytywy :) – HairyFotr

Powiązane problemy