Вимкніть попередження "не використовується" для загальнодоступних методів класу


77

Нове оновлення intellij (10.5) тепер показує попередження про те, що деякі методи, визначені для класу, не використовуються. Ці методи є загальнодоступними, і я планую не використовувати їх усіх, оскільки я створив їх для підтримки очікуваного API. Я хотів би відключити це попередження (не використовується для загальнодоступних методів у класі). Чи є спосіб це зробити ?.

Відповіді:


64

Ви можете вимкнути його для такого методу

@SuppressWarnings("unused")
public void myMethod(){...}

3
Ідеально! Я не хотів, щоб попередження вимикалось для мого нового коду, я просто хотів, щоб воно замовчало про застарілий код, який може "відобразитися" через якийсь фрагмент "Spring-etti".
Roboprog

10
Трохи безглуздо, що вам потрібно сказати Intellij, що ПУБЛІЧНИЙ метод може використовуватися кодом, який Intellij не бачить ...
Флоріан Ф

Це насправді сумно. Мені здається, Intellij дуже дратує. Я думаю, що їх намір був добрим, але я відчуваю, що борюся з цим під час кодування. Права смуга прокрутки заповнена помилковими попередженнями замість реальних попереджень.
TatiOverflow

@TatiOverflow: Клацнувши правою кнопкою миші на правій панелі та вибравши "Налаштувати рівень виділення", ви можете взагалі видалити перевірки.
Ерк

Здається, його перейменовано на @Suppress("unused"). Крім того, його можна знайти, клацнувши правою кнопкою миші -> вимкнути перевірку для цього рядка.
Полв

52

ІДЕЯ 2016.3

У майбутній версії IDEA 2016.3 (попередня версія вже доступна) тепер можна налаштувати обсяг перевірки:

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

<ІДЕЯ 14.0

Якщо ви хочете виділити невикористані загальнодоступні методи, увімкніть глобальну перевірку "Налаштування | Перевірки | Надмірність декларації | Невикористана декларація".

Якщо ви хочете виділити невикористані приватні методи, увімкніть локальну перевірку "Налаштування | Перевірки | Надмірність декларації | Невикористаний символ".

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

Джерело

Я щойно перевірив його за допомогою IDEA 13.1.4, і він працював точно так, як описано.

ІДЕЯ 14.x

В IntelliJ IDEA 14.0.x налаштування знаходяться в розділі:

Settings | Editor | Inspections | Declaration redundancy | Unused symbol/declaration

В IntelliJ IDEA 14.1 опція, схоже, відсутня.


Здається, перевірка "Невикористаного символу" пройшла в IDEA 14.
trustin

Зовсім не, це під Settings | Editor | Inspections | Declaration redundancy | Unused symbol. Якщо ви не можете його знайти, введіть Unused symbolу вікні пошуку у діалоговому вікні налаштувань.
Darek Kay

Я це вже пробував. Я перебуваю в IDEA EAP 141.814.3. Ось скріншот - imgur.com/cfOa48M
trustin

2
Ви маєте рацію, в 14.0.3 він все ще був там. Зараз я не можу знайти його чи будь-яку альтернативу.
Darek Kay


39

Вимкнути Settings| Inspections| Declaration redundancy| Перевірка невикористаного коду декларації . Як варіант, ви можете створити власну область для своїх класів API і вимкнути цю перевірку лише для кожної області API, щоб вона все ще працювала в інших частинах вашого проекту.


31
Шкода, що немає можливості виключити цю перевірку лише для загальнодоступних методів і залишити її включеною для приватних методів.
CarlG,

2
Є, дивіться мою іншу відповідь.
Darek Kay

1
Це знову зникло. Див. Коментарі у відповіді @DarekKay.
Марк Єронім

9

2018-2019

Ось оновлення 2019 року для: IntelliJ IDEA 2018.3.2 (Community Edition) Збірка # IC-183.4886.37, побудована 17 грудня 2018 року

Налаштування | Редактор | Перевірки | Декларація про надмірність | Невикористана декларація

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


Чи потрібно мати про-версію, щоб отримати всі ці варіанти? Оскільки їх у мене немає, у мене є лише "Невикористана декларація". Можливо, це тому, що я працюю над грувістим проектом ... але все ж.
Zangdar

Це тому, що я працював над груві-проектом, вони там у
Яві

1
Кращим підходом ІМО є позначення класу як "точки входу".
Таня Живца

Зображення вартістю більше 1000 слів. Чи можете ви додати пояснення та посилання на довідковий сайт IntelliJ, щоб дозволити користувачам зрозуміти цю функцію та конфігурацію? Наприклад, дивіться Трішу Гі, яка пояснює виявлення невикористаного коду в IntelliJ
hc_dev

@TanyaJivvca Вашу пропозицію надихнуло мене дослідження і відповідь: ми повинні повідомити призначенню з тестом, тому він звикає і задокументовані ( в якості точки входу ) 😉
hc_dev

7

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


5

В останній версії для цих опцій Settings>Inspections>Java>Declaration redundancy>Unused declaration>Methodsзнімаються прапорці, які не є обов’язковими.


2

Це стара тема, але я опинився тут швидше, ніж міг знайти рішення, тому збираюся поділитися своїми результатами. По-перше, я не впевнений, що ми працюємо з однією мовою (тут JS), але возитись із інструментами на основі графічного інтерфейсу, ось з чим я закінчив. Наступний код давав мені сумнозвісне попередження "не використовується":

/**
 * @class sample class
 */
var MyClass = function () {
    return this;
};

/**
 * Some public method
 * @api public
 */
MyClass.prototype.myMethod = function () {
    return null;
};

Там йде "Невикористане визначення myMethod". Інспектор в кінцевому підсумку запропонував проігнорувати цю конкретну проблему, додавши

//noinspection JSUnusedGlobalSymbols

прямо над цим конкретним методом, щоб наступний код більше не приводив до цього попередження:

//noinspection JSUnusedGlobalSymbols
/**
 * Some public method
 * @api public
 */
MyClass.prototype.myMethod = function () {
   return null;
};

Інші попередження (друкарські помилки тощо), здається, все ще з'являються, включаючи невикористані локальні змінні та параметри, тому, схоже, це відокремлює цю проблему. Недоліком є ​​те, що він, як правило, забруднює ваш код, якщо у вас його багато ...


1
Точно так. Це забруднення коду, коли розробник Intellij міг просто вирішити проблему. У будь-якому разі, якась нова ідея з цього приводу?
TatiOverflow

Примітка: Ви можете дозволити phpstorm додавати "// noinspection JSUnusedGlobalSymbols" автоматично, використовуючи діалогове вікно "Показати дії з наміром"> "Придушити для оператора". Я можу отримати доступ до цього за допомогою комбінації клавіш alt + enter залежить від вашого відображення клавіш.
kosinix

1

Я просто натиснув "придушити для заяви", і веб-шторм додав це:

//noinspection JSUnusedGlobalSymbols

0

Нещодавно, розширюючи бібліотеку, мене також попередило те застереження про перевірку "не використовується".

Подумайте, чому IntelliJ сигналізує

Зазвичай при рефакторингу всі невикористані методи / параметри повинні бути безпечно видалені (за допомогою безпечного видалення Intellij дії ).

Таким чином, метою IntelliJ (як Checkstyle та інші) є підтримка нашого чистого дизайну. Оскільки невикористані методи не використовуються ні внутрішньо (в src/java/main), ні зовнішньо перевірені (в src/java/test), вони здаються застарілими. То чому б не слідувати приказці "Коли сумніваєшся, викинь це".

При рефакторингу це переважно справжня порада. Але якщо ми розробляємо бібліотеку / API, яка призначена для використання в інших базах кодів (модулі / залежності з зовнішнього боку), тоді ми швидше відповідаємо "Коли не використовується, заплутайтеся".

Ми здивовані попередженням IntelliJ. Методи не слід видаляти, оскільки вони насправді призначені для використання в інших місцях . Вони є точками входу .

Потім виберіть відповідне рішення

Усі наведені нижче рішення мають одне в коментарі:

  • Спілкуйтеся через свій код, щоб кожен IDE та розробник могли зрозуміти (наприклад, додати тест, щоб він став використовуватися)
  • Повідомте про свій намір (наприклад, IntelliJ шляхом переналаштування інспекції коду )

Налаштуйте перевірку або вимкніть

Як описано в різних попередніх відповідях. За допомогою знімків екрана та навігаційних підказок до налаштувань перевірки коду від IntelliJ

Додайте тест

Якщо ви додасте тест на невикористаний (метод, клас тощо), ви отримаєте вигоду 3 способами:

  1. правильність: (раніше) невикористаний предмет, що тестується тестується (SUT)
  2. спілкування: ви чітко повідомляєте кожному читачеві, що і як слід використовувати ваш невикористаний (метод, клас тощо)
  3. оформлення: тепер невикористане нарешті звикло. Тож інспекція IntelliJ більше не знайде і не попередить.

Додайте або позначте як точку входу

Я бачив пропозицію кілька разів:

Кращим підходом ІМО є позначення класу як "точки входу". - Таня Живца 18 серпня о 8:46

Додайте елемент як точку входу . За замовчуванням весь код у глобальній області , а також тести вважаються доступними. Якщо ви знаєте, що метод або функція виконуються, ви можете додати їх як точку входу. Код всередині точки входу тепер також виконується і доступний. Коли ви додаєте точку входу, файли вихідного коду залишаються незмінними , а запис елемента зберігається у проекті під .idea\misc.xml.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.