Як вимкнути повідомлення “Доступ може бути приватним” в IntelliJ?


79

Розробляючи API, попереджувальне повідомлення "Доступ може бути пакетним пакетом" у класах Java може справді дратувати.

Я вже витратив деякий час, переглядаючи налаштування, щоб знайти спосіб вимкнути це повідомлення, але без будь-яких знахідок. Будь-яка ідея, як відключити повідомлення?


6
Мій каже мені, що метод може бути приватним для пакету, але коли я це роблю, інші місця в моєму коді, де він називається, не працюватимуть (як ви очікували), так чому він говорить мені, що це може бути пакунок -приватний? Не може бути, якщо я використовую його деінде. Тут не дуже корисна пропозиція від IDE.
Марк Фірбі,

Відповіді:


54

Правило перевірки: "Доступ до декларації може бути слабшим", і є два варіанти, які можна відключити "Запропонувати рівень приватного рівня видимості ..."


68

Перейдіть до Settings → Editor → Inspectionsтого Java → Declaration redundancy → Declaration access can be weakerправила.
Тут ви можете його взагалі вимкнути або вибрати параметри пропозицій на правій панелі:

введіть тут опис зображення


62

Щоб вимкнути для кожного випадку окремо, використовуйте

@SuppressWarnings("WeakerAccess")

6
Це найкраща відповідь. Роблячи це, ви фактично документуєте свій намір, замість того, щоб IDE покривала все для вас
рат

3
Я б сказав, що оголошення методу загальнодоступним вже задокументувало ваш намір. Але я розумію суть. Якщо ви скажете це двічі, вони почнуть вірити, що ви насправді це маєте на увазі.
Michael Kay

1
Насправді це стара анти-модель, щоб зробити все приватним. Користувачі TDD зрозуміють це краще за всіх. По суті, якщо ви не пишете код для розповсюдження і не хочете захищати внутрішні елементи від своїх користувачів, роблячи все приватним, ускладнює тестування та рефакторинг. Маючи це на увазі, Mayne не така вже погана ідея зробити його IDE широким.
Brill Pappin

Навіть тоді я майже впевнений, що ви можете налаштувати деякі обфускатори, щоб змінити для вас доступ.
Earthcomputer

@BrillPappin Чи є у вас якесь джерело, про яке я можу прочитати, про ідею про те, що зберігати все в найслабшому можливому доступі (а не "робити все приватним", за що я впевнений, що ніхто ніколи не виступав) є анти-шаблоном? І ускладнює рефакторинг? На мій погляд, оприлюднення всього поступово перетворить код у миску спагетті, де все залежить від усього.
SantiBailors

8

Наведіть курсор на public, натисніть Alt+ Enterі виберіть один із варіантів:
введіть тут опис зображення


2
Цікаво, що у мене немає опції "Вимкнути перевірку" при виборі "Зробити" пакет-приватним "". (Можливо, я вимкнув інше налаштування, щоб я не бачив цього варіанту.) Я впевнений, що ваша відповідь працює. Дякую. Рішення mboss зробило для мене свою справу.
Томас Цубербюлер

Працював у мене :-)
мерек

3
Чи не відключить це всі пропозиції "Доступ до декларації може бути слабшим", а не лише ті, що пропонують приватний пакет?
Джо Уайт

4

Ще одне рішення, про яке не згадувалося до цього часу: якщо у вас є метод, який оголошено загальнодоступним, і IDE повідомляє вам, що немає посилань на метод поза пакетом, то, можливо, вам потрібно додати тест, який викликає цей метод ззовні пакунок. Іншими словами, трактуйте попередження як сигнал про відсутність тесту для публічного методу.


Оскільки загальноприйнятий клас тестування знаходиться в тому ж пакеті, що і тестований клас, це насправді нічого не змінить.
Стефан Д.

1
@Stefan: Зазвичай модульні тести сидять в одному пакеті, але загальнодоступний API повинен бути перевірений, наприклад, в тестах інтеграції або прийняття, і повинен використовувати загальнодоступний API, як це робив би справжній клієнт. Ззовні, я думаю.
jazz64
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.