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


79

У мене є рядок коду Java, де IntelliJ відображає попередження. Як заглушити попередження у цьому конкретному рядку, не впливаючи на попередження, відображені в інших рядках?

У цьому питанні не має значення, що таке фактичне попередження: тепер я не шукаю поради щодо того, як поліпшити якість конкретного фрагмента коду Java, але я хочу загалом знати, як запобігти IntelliJ відображати попередження щодо певного Вихідний рядок Java.


Це дійсно недостатньо деталей, щоб хтось відповів. Яке попередження? Що на лінії?
Джим Гаррісон,

Додаткова інформація про попередження буде корисною. Попередження існують з певної причини, і часто краще вирішити основну проблему, ніж ігнорувати попередження.
Freiheit

8
У цьому питанні конкретне попередження не має значення. Я хочу загалом знати, що я можу зробити, щоб вимкнути попередження, про які повідомляє IntelliJ для певного рядка (на додаток до виправлення мого коду), для всіх можливих попереджень.
kat

Наприклад: Intellij скаржиться, що password.replaceAll(".","*")це, як правило, помилка. Він вважає, що ви мали на увазі replaceAll("\.",...). Дякую, але ні. Тож зараз я хочу визнати та придушити попередження. Я не хочу, щоб це зависало.
Флоріан Ф

Відповіді:


80

В основному в IntelliJ, ви можете натиснути на рядок і Alt+Enter, і, серед іншого, він матиме варіанти придушення попередження.


11
У моєму випадку у нього немає такої можливості. Він пропонує кілька варіантів виправити першопричину попередження, але я не хочу цього зараз. Я просто хочу позбутися попередження.
kat

24
@kat, вам потрібно натиснути клавішу зі стрілкою вправо, щоб відкрити підменю інспекції, звідки ви можете придушити його для поточного рядка, який автоматично додасть анотацію.
CrazyCoder

6
Зараз це працює, коли ви (Райан Стюарт та CrazyCoder) писали: я натискаю F2, щоб перейти до наступного попередження, потім натискаю Alt-Enter, щоб побачити попередження, потім натискаю клавішу зі стрілкою вправо, щоб отримати варіанти виправлення проблеми, потім Я вибираю відповідний варіант Ігнорувати ... FYI Просто наведення миші на рядок попередження відображає підказку, за допомогою якої неможливо позбутися попередження.
kat

3
Поточний IntelliJ дозволяє використовувати "Аналіз": "Перевірити код", який відкриває нижню область. На правій панелі праворуч є зручне "Заглушити для виписки". Однак потрібен великий екран і миша.
Тіно 02

53

Розширення на відповідь Райан Стюарт, в IntelliJ, використання Alt+Enter, потім виберіть перший підміню, то останній пункт: Suppress for statement.

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

Оновлення

Використовуючи IntelliJ IDEA 13, я помітив додатковий пункт меню: "Закрити для заяви з коментарем". Для цього буде використаний стиль IntelliJ //noinspection unchecked. Якщо вибрати «Придушити для заяви», IntelliJ буде вставити цей текст: @SuppressWarnings("unchecked").


1
Дякую. Однак це додасть // неінспекційне припинення замість @SuppressWarnings ("припинення дії")
Мартін Висний,

1
@SuppressWarnings()є Java, //noinspectionце JavaScript
Tino

1
@MartinVysny, якщо ви хочете @SuppressWarnings("unchecked")використовувати Suppress for methodзамістьSuppress for statement
Піт

6
Чи існує список усіх дійсних тегів для // noinspection?
andresp

14

Залежно від попередження, яке ви можете використовувати @SuppressWarnings. Наприклад:

@SuppressWarnings("deprecation")
yourLineWhichIsDeprecated;

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


Дякуємо за довідкову інформацію, радимо знати, як працює SuppressWarning. Однак я шукав рішення, специфічне для IntelliJ.
кат

Посилання просто
переходить

Виправлено посилання.
Martijn Courteaux

8

У IntelliJ 15 вбудована "жовта лампочка" та меню alt-enter не пропонують пригнічувати перевірку на 1 рядок.

Є більше варіантів при виконанні перевірок через меню: Analyze -> Inspect Code....

Потім на оглядовій панелі праворуч пропонуються різні варіанти. Частина тексту на правій панелі можна натиснути. Зверніть увагу, що зазвичай доступна також функція вирішення проблем (швидке виправлення).

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

(Очевидно, @tino вже помітив це в коментарі, але я пропустив його коментар вперше. Я додаю це як повну відповідь, щоб полегшити пошук важливого біта, який я особисто пропустив.)


Принаймні відповідь, яка не покладається на меню alt-enter, яке, як зазначено, у деяких випадках не пропонує "Вимкнути перевірку" або "Придушити для ...".
Міхаел Полла,

1
  1. Клацніть на область скарги, яка має хвилясту лінію 〰️ під нею
  2. З'явиться лампочка 💡, клацніть лампочку 💡
  3. Виберіть опцію придушення виписки

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

4. Над поточним рядком не буде додано коментар щодо перевірки //noinspection CssInvalidPropertyValue

  1. Скарги зникають 👏

0

Під час компіляції коду за допомогою мови Kotlin та IntelliJ тут є підказка

Ось посилання на джерело github, звідки походять попередження компілятора і де визначені повідомлення про помилки, виведені компілятором Kotlin

kotlin / compiler / frontend / src / org / jetbrains / kotlin / diagnostics / rendering / DefaultErrorMessages.java

Якщо компілятор виводить "Змінна '' {0} '' ніколи не використовується", він бере початок з цього рядка у формі DefaultErrorMessages.java

MAP.put(UNUSED_VARIABLE, "Variable ''{0}'' is never used", NAME);

Щоб придушити попередження, ви можете розмістити анотацію @Suppress () перед невикористовуваною змінною у вашому коді, наприклад:

@Suppress("UNUSED_VARIABLE")
var y: Int = 3

Тож фокус, якщо IntelliJ не допомагає з’являти пропозиції, натискаючи Alt + ENTER у виділеному виразі, - заглянути всередину DefaultErrorMessages.java, якщо ви можете знайти повідомлення про помилку та ключове слово для придушення певного попередження за допомогою @Suppress (.. names )

Ця тема не позначена як "Kotlin", але принаймні з позначкою IntelliJ


0

// неперевірка не перевірена, ConstantConditions

@SuppressWarnings працює не в усіх місцях

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