IntelliJ에서 "액세스는 패키지 전용 일 수 있습니다"메시지를 비활성화하는 방법은 무엇입니까?


79

API를 개발할 때 Java 클래스의 "액세스는 패키지 패키지 일 수 있습니다."라는 경고 메시지는 정말 성 가실 수 있습니다.

이 메시지를 비활성화하는 방법을 찾기 위해 설정을 살펴 보았지만 결과는 없습니다. 메시지를 비활성화하는 방법을 알고 있습니까?


6
내 메서드는 패키지 전용 일 수 있지만 그렇게하면 내 코드에서 호출되는 다른 위치가 작동하지 않을 것입니다 (예상대로). -은밀한? 내가 다른 곳에서 사용하고 있다면 그럴 수 없습니다. 여기 IDE에서 제공하는 유용한 제안은 아닙니다.
마크 Fearby

답변:


54

검사 규칙은 "선언 액세스가 약할 수 있음"이며 비활성화 할 수있는 두 가지 옵션이 있습니다. "패키지-개인 가시성 수준 제안 ..."


68

Settings → Editor → Inspections그런 다음 Java → Declaration redundancy → Declaration access can be weaker규칙으로 이동하십시오 .
여기에서 전혀 비활성화하거나 오른쪽 창에서 제안 옵션을 선택할 수 있습니다.

여기에 이미지 설명 입력


62

사례별로 비활성화하려면 다음을 사용하십시오.

@SuppressWarnings("WeakerAccess")

6
이것이 최고의 답변입니다. 이렇게함으로써 IDE가 모든 것을 포괄하는 대신 의도를 실제로 문서화합니다
rath

3
나는 이미 당신의 의도를 문서화 한 방법을 공개적으로 선언한다고 말했을 것입니다. 그러나 나는 요점을 얻습니다. 당신이 그것을 두 번 말하면 그들은 당신이 정말로 그것을 의미한다고 믿기 시작할 것입니다.
Michael Kay

1
실제로 모든 것을 비공개로 만드는 것은 오래된 안티 패턴입니다. TDD 사용자는 누구보다 이것을 더 잘 이해할 것입니다. 기본적으로 배포 용 코드를 작성하고 사용자로부터 내부를 보호해야하는 경우가 아니면 모든 것을 비공개로 설정하면 테스트 및 리팩토링이 더 어려워집니다. 이를 염두에두고 Mayne은 IDE를 넓게 만드는 것이 그렇게 나쁜 생각이 아닙니다.
Brill Pappin 2019

그래도 액세스 권한을 변경하기 위해 일부 난독 화기를 구성 할 수 있다고 확신합니다.
Earthcomputer

@BrillPappin 모든 것을 가능한 한 가장 약한 액세스 상태로 유지하는 것이 (아무도 옹호 한 적이없는 "모든 것을 비공개로 설정"이 아니라) 반 패턴이라는 아이디어에 대해 읽을 수있는 출처가 있습니까? 리팩토링을 더 어렵게 만들까요? 제 생각에 모든 것을 공개하면 코드가 점차 모든 것이 모든 것에 의존하는 스파게티 그릇으로 바뀔 것입니다.
SantiBailors

8

커서를로 이동하고 +를 public누른 다음 옵션 중 하나를 선택합니다.AltEnter
여기에 이미지 설명 입력


2
흥미롭게도 "Make 'package-private'"를 선택할 때 "Disable inspection"옵션이 없습니다. (아마도 해당 옵션이 표시되지 않도록 다른 설정을 비활성화했을 수 있습니다.) 귀하의 답변이 작동한다고 확신합니다. 감사합니다. mboss의 솔루션이 나를 위해 트릭을했습니다.
Thomas Zuberbuehler

나를 위해 일했습니다 :-)
mrek

3
이것이 패키지-개인을 제안하는 것뿐만 아니라 모든 "선언 액세스가 약할 수 있음"제안을 비활성화하지 않습니까?
Joe White

4

지금까지 언급되지 않은 또 다른 솔루션 : public으로 선언 된 메서드가 있고 IDE에서 패키지 외부의 메서드에 대한 참조가 없다고 알려주는 경우 외부에서 해당 메서드를 호출하는 테스트 케이스를 추가해야합니다. 패키지. 즉, 경고를 공용 메서드에 대한 테스트 케이스가 없음을 알리는 신호로 취급하십시오.


테스트 클래스가 테스트중인 클래스와 동일한 패키지에있는 것이 일반적이므로 실제로는 아무것도 변경하지 않습니다.
Stefan D.

1
@Stefan : 일반적으로 단위 테스트는 동일한 패키지에 있지만 공개 API는 통합 또는 승인 테스트에서 테스트해야하며 실제 클라이언트처럼 공개 API를 사용해야합니다. 밖에서 생각합니다.
jazz64
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.