¿Cómo deshabilitar el mensaje "El acceso puede ser un paquete privado" en IntelliJ?


79

Al desarrollar una API, el mensaje de advertencia "El acceso puede ser paquete-paquete" en las clases de Java puede ser realmente molesto.

Ya pasé un tiempo revisando la configuración para encontrar una manera de deshabilitar este mensaje, pero sin ningún hallazgo. ¿Alguna idea de cómo desactivar el mensaje?


6
El mío me dice que un método puede ser un paquete privado, pero cuando lo hago, los otros lugares en mi código donde se llama no funcionarán (como era de esperar), entonces, ¿por qué me dice que puede ser un paquete? -¿privado? No puede ser si lo estoy usando en otro lugar. No es una sugerencia muy útil del IDE aquí.
Marc Fearby

Respuestas:


54

La regla de inspección es "El acceso a la declaración puede ser más débil" y hay dos opciones que se pueden deshabilitar "Sugerir nivel de visibilidad privado del paquete ..."


68

Ve a y Settings → Editor → Inspectionsluego Java → Declaration redundancy → Declaration access can be weakergobierna.
Aquí puede deshabilitarlo o seleccionar las opciones de sugerencia en el panel derecho:

ingrese la descripción de la imagen aquí


62

Para deshabilitar caso por caso, use

@SuppressWarnings("WeakerAccess")

6
Esta es la mejor respuesta. Al hacer esto, realmente documenta su intención, en lugar de que el IDE cubra todo por usted
rath

3
Yo diría que declarar un método como público ya documentó su intención. Pero entiendo el punto. Si lo dices dos veces, comenzarán a creer que realmente lo dices en serio.
Michael Kay

1
En realidad, es un antiguo anti-patrón hacer que todo sea privado. Los usuarios de TDD entenderán esto mejor que nadie. Esencialmente, a menos que esté escribiendo código para distribución y necesite proteger los componentes internos de sus usuarios, hacer que todo sea privado dificulta las pruebas y la refactorización. Con eso en mente, Mayne no es tan mala idea ampliar el IDE.
Brill Pappin

Incluso entonces, estoy bastante seguro de que puede configurar algunos ofuscadores para cambiar el acceso por usted.
Earthcomputer

@BrillPappin ¿Tiene alguna fuente que pueda leer sobre la idea de que mantener todo en el acceso más débil posible (no "hacer todo privado", que estoy seguro de que nadie ha defendido nunca) es un anti-patrón? ¿Y dificulta la refactorización? En mi opinión, hacer público todo va a convertir poco a poco el código en un plato de espaguetis donde todo depende de todo.
SantiBailors

8

Mueva el cursor a public, presione Alt+ Entery elija una de las opciones:
ingrese la descripción de la imagen aquí


2
Curiosamente, no tengo la opción "Desactivar inspección" cuando selecciono "Hacer 'paquete-privado'". (Probablemente he desactivado otra configuración para no ver esa opción). Estoy seguro de que su respuesta funciona. Gracias. La solución de mboss hizo el truco para mí.
Thomas Zuberbuehler

Me funcionó :-)
mrek

3
¿No deshabilitaría esto todas las sugerencias de "El acceso a la declaración puede ser más débil", no solo las que sugieren paquete privado?
Joe White

4

Otra solución no mencionada hasta ahora: si tiene un método que se declara público y el IDE le dice que no hay referencias al método desde fuera del paquete, entonces tal vez necesite agregar un caso de prueba que llame a ese método desde fuera el paquete. En otras palabras, trate la advertencia como una señal de la ausencia de un caso de prueba para un método público.


Dado que es común que la clase de prueba esté en el mismo paquete que la clase bajo prueba, esto realmente no cambiará nada.
Stefan D.

1
@Stefan: Normalmente, las pruebas unitarias se encuentran en el mismo paquete, pero una API pública debe probarse, por ejemplo, en pruebas de integración o aceptación y debe usar la API pública como lo haría un verdadero cliente. Desde fuera, creo.
jazz64
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.