Jak wyłączyć komunikat „Dostęp może być prywatny dla pakietu” w IntelliJ?

79

Tworząc API, komunikat ostrzegawczy „Dostęp może być pakietem” w klasach Java może być naprawdę denerwujący.

Spędziłem już trochę czasu na przeglądaniu ustawień, aby znaleźć sposób na wyłączenie tej wiadomości, ale bez żadnych ustaleń. Masz jakiś pomysł, jak wyłączyć wiadomość?

Thomas Zuberbuehler
źródło
6
Moja metoda mówi mi, że metoda może być prywatna dla pakietu, ale kiedy to zrobię, inne miejsca w moim kodzie, w których jest wywoływana, nie będą działać (jak można się spodziewać), więc dlaczego mówi mi, że może to być pakiet -prywatny? Nie może tak być, jeśli używam go gdzie indziej. Niezbyt pomocna sugestia ze strony IDE.
Marc Fearby

Odpowiedzi:

54

Reguła inspekcji to „Dostęp do deklaracji może być słabszy” i istnieją dwie opcje, które można wyłączyć „Zaproponuj poziom widoczności prywatnego pakietu ...”

mboss
źródło
68

Idź do, Settings → Editor → Inspectionsa następnie Java → Declaration redundancy → Declaration access can be weakerrządź.
Tutaj możesz go w ogóle wyłączyć lub wybrać opcje sugestii w prawym panelu:

wprowadź opis obrazu tutaj

DimaSan
źródło
62

Aby wyłączyć w poszczególnych przypadkach, użyj

@SuppressWarnings("WeakerAccess")
szukanie spokoju
źródło
6
To najlepsza odpowiedź. Robiąc to, faktycznie udokumentujesz swoje zamiary, zamiast mieć wszystko za sobą IDE
rath
3
Powiedziałbym, że ogłoszenie metody jako publicznej już udokumentowało twój zamiar. Ale rozumiem. Jeśli powiesz to dwa razy, zaczną wierzyć, że naprawdę masz to na myśli.
Michael Kay
1
Właściwie to stary anty-wzór, aby wszystko było prywatne. Użytkownicy TDD zrozumieją to lepiej niż ktokolwiek inny. Zasadniczo, chyba że piszesz kod do dystrybucji i musisz chronić elementy wewnętrzne przed użytkownikami, uczynienie wszystkiego prywatnym, utrudnia testowanie i refaktoryzację. Mając to na uwadze, Mayne nie jest takim złym pomysłem, aby uczynić go szerokim IDE.
Brill Pappin
Nawet wtedy jestem prawie pewien, że możesz skonfigurować niektóre obfuskatory, aby zmienić dostęp.
Earthcomputer
@BrillPappin Czy masz jakieś źródło, które mogę przeczytać o idei, że utrzymywanie wszystkiego w najsłabszym możliwym dostępie (a nie „uczyń wszystko prywatnymi”, czego jestem pewien, że nikt nigdy nie zalecał) jest anty-wzorcem? I utrudnia refaktoryzację? Moim zdaniem upublicznianie wszystkiego stopniowo zmieni kod w miskę spaghetti, w której wszystko zależy od wszystkiego.
SantiBailors
8

Przesuń kursor do public, naciśnij Alt+ Enteri wybierz jedną z opcji:
wprowadź opis obrazu tutaj

JimHawkins
źródło
2
Co ciekawe, nie mam opcji „Wyłącz inspekcję” po wybraniu opcji „Ustaw pakiet jako prywatny”. (Prawdopodobnie wyłączyłem inne ustawienie, więc nie widzę tej opcji.) Jestem pewien, że twoja odpowiedź działa. Dziękuję Ci. Rozwiązanie firmy mboss załatwiło sprawę.
Thomas Zuberbuehler
Pracował dla mnie :-)
mrek
3
Czy nie spowoduje to wyłączenia wszystkich sugestii „Dostęp do deklaracji może być słabszy”, a nie tylko tych sugerujących pakiet prywatny?
Joe White
4

Inne rozwiązanie, o którym do tej pory nie wspomniano: jeśli masz metodę, która jest zadeklarowana jako publiczna, a IDE mówi ci, że nie ma odniesień do metody spoza pakietu, być może musisz dodać przypadek testowy, który wywołuje tę metodę z zewnątrz paczka. Innymi słowy, traktuj ostrzeżenie jako sygnalizujące brak przypadku testowego dla metody publicznej.

Michael Kay
źródło
Ponieważ często klasa testująca znajduje się w tym samym pakiecie co testowana klasa, to tak naprawdę niczego nie zmieni.
Stefan D.
1
@Stefan: Zazwyczaj testy jednostkowe znajdują się w tym samym pakiecie, ale publiczny interfejs API powinien być testowany np. W testach integracji lub akceptacji i powinien używać publicznego API tak, jak zrobiłby to prawdziwy klient. Chyba z zewnątrz.
jazz64