Как отключить предупреждение о статическом анализе кода построчное предупреждение в CDT (код C)?

У нас есть проект с использованием CDT в Eclipse. Это'Это старый проект, который мы только что импортировали в Eclipse, и я хочу убедиться, что мы начнем использовать статический анализ кода, чтобы найти какие-то странности.

Дело в том, что есть несколько строк, которые запускают предупреждения, которые мы хотим просто игнорировать, причем основными являются ошибки в выражениях switch.

Я знаю, как сделать это для линта, но как насчет CDT? Есть ли однострочный комментарий, который я могу поместить прямо над строкой?

Пример: ("Без перерыва в конце дела ")

  case enChA:  
    nChannel++;
    // I want to ignore this fallthrough       
  case enChB:      
    nChannel++;
    // And this one...
  case enChC:
    nChannel++;
    // And this one...
  case enChD:
    nChannel++;
    // do some more stuff...
    break;
 Craig McQueen28 февр. 2018 г., 00:09
Этот вопрос вызвал бы больший интерес благодаря более описательному заголовку, который относится к разрыву в конце регистра в операторе переключения.
 c.fogelklou01 мар. 2018 г., 07:04
@CraigMcQueen, спасибо за совет, но я на самом деле спрашивал о том, как отключить статический анализ кода построчно. Перерыв был просто конкретным примером предупреждения, которое я хотел отключить. Все сосредоточились на примере, но это нена самом деле оригинальный вопрос.

Ответы на вопрос(7)

Начиная с этих версий, предупреждения / маркеры можно подавить, просто используя "Быстрая починка".

 Настройки -> C / C ++ -> Анализ кода. Вы можете настроить параметры. Например, если вы выбираетеNo break at the end of caseВы можете определить комментарий, который подавляет предупреждение. По умолчанию это "без остановки", По совпадению скопируйте / вставьте предупреждение в комментарий, работающий в вашем случае:

Как вы можете видеть текст нене должно быть точного соответствия, и это неКажется, также чувствительны к регистру.

Ссылаясь наВаш дополнительный вопрос о неиспользованных переменных: Когда вы настраиваетеUnused variable in file scope Вы можете определить имена переменных, которые следует игнорировать:

 Есть два загадочных предопределенных исключения "@ (#)» а также "$ Id», К сожалению, я не могне могу найти никакой официальной документации, поэтому я пошел висточник, Похоже, что программа проверки просто проверяет, является ли имя переменнойcontains() любое из указанных исключений. Если это так, предупреждение подавляется.

За пределами Eclipse CDT, естьs популярный трюк-кастинг. Если компилятор предупреждает о неиспользуемой переменной, приведите ее к void. Эта операция не имеет никакого эффекта, поэтомуЭто безопасно, но с точки зрения компилятора эта переменная теперь используется. Я обычно оборачиваю это в макрос, чтобы совершенно ясно понять, что яя делаю, например

#define UNUSED(var) (void)(var)

void foobar()
{
    int b;     // not used. 
    UNUSED(b); // now it's used
}
Решение Вопроса

Тебе стоит попробовать

//no break

до следующего дела.

 Martin Scharrer17 февр. 2015 г., 11:24
Благодарю. Работает также как/* no break */ или же/* no break at the end of case */, (Я могу'т использовать// комментарии, потому что ям ограничен C89.)
 Bruce K27 мая 2015 г., 22:42
Я уверен, что было бы любопытно узнать, почему онемение орехов в затмении решили "без остановки" лучше чем30 лет от роду "ПРОВАЛИТЬСЯ", О чем они думали?
 Al Bundy02 июл. 2015 г., 23:27
@BruceK: в Eclipse вы можете персонализировать сообщение. Значением по умолчанию являетсяno break но я изменил это сейчасFALLTHROUGH и работает нормально!
 c.fogelklou05 июн. 2013 г., 12:27
Я принял ваш ответ, но я также хотел бы игнорировать некоторые "неиспользуемые объявления переменных. "  Любые советы по этому поводу?
 Bruce K04 июл. 2015 г., 17:25
@AlBundy Спасибо. Я уже это узнал. Вопрос имеет отношение к "о чем они думали?  Они фактически бросили рывок в 30-летнюю традицию пуха без видимой причины. Да, я могу разобраться с этим с достаточным количеством исследований. Исследования, которые мы и многие другие были вынуждены проводить. Напрасно.

в этом конкретном случае можно решить добавить комментарий:

//no break

или же:

//no break at the end of case

Что действительно важно, так это (без перерыва).

Но также требуется, чтобы вы нене должно быть больше комментариев между концом этого дела и следующим, или он выигралт работа. Например, следующий случай все равно приведет к предупреждению:

case enChC:
    ++nChannel;
    //No break
    //This second case decrease the value
  case enChD:
    ++nChannel;

Я просто добавил текст из предупреждения, которое я хотел игнорировать, сразу выше, где будет перерыв.

Как это:

      case enChC:
        ++nChannel;
        //No break at the end of case
      case enChD:
        ++nChannel;
 dslake19 мар. 2016 г., 06:00
Я пришел сюда с той же проблемой. Я бы никогда не нашел эту настройку без SE. По умолчанию в Eclipse, если у вас есть точная строкабез остановки" В любом месте комментария, где обычно идет разрыв (прямо перед следующим оператором case), оно удалит предупреждение. Это'не чувствительны к регистру и даже "Дай мне носорога " работает! лол
 gkovacs9005 июн. 2013 г., 11:25
не могли бы вы проверить, работает ли это просто с "без остановки"?

вам нужно перейти в Настройки->C / C ++ ->Редактор, а затем снимите флажки с опций "Выделите неактивный код ","Проблемы с отображением при вводеи т.д. Надеюсь, это поможет.

 c.fogelklou08 июн. 2013 г., 08:04
Это не то, что я хотел. Я хочу отключить конкретные экземпляры каждого предупреждения, а не все экземпляры. Раздражающие предупреждения важны, потому что, например, иногда вы хотите потерпеть неудачу, а иногда -Это ошибка, из-за которой предупреждение стоит на первом месте.

и я просто хочу устранить их. Я пытался добавить / * без перерыва * /, вы должны убедиться, что он добавлен до следующего "дело", Это вопрос, с которым я столкнулся

Это решение, которое я использую:

Ваш ответ на вопрос