Ответ 1
Вы должны попробовать
//no break
перед следующим случаем.
У нас есть проект с использованием CDT в Eclipse. Это старый проект, который мы просто импортировали в Eclipse, и я хочу, чтобы мы начали использовать статический анализ кода, чтобы найти какие-либо странности.
Дело в том, что есть ряд строк, которые вызывают предупреждения, которые мы хотим просто игнорировать, причем основные из них являются провалами внутри операторов switch.
Я знаю, как это сделать для lint, но как насчет 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;
Вы должны попробовать
//no break
перед следующим случаем.
Эти параметры расположены в окне "Окно" → "Настройки" → "C/С++ → " Анализ кода ". Вы можете настроить параметры. Например, если вы выберите No break at the end of case
, вы можете определить комментарий, который подавляет предупреждение. По умолчанию это" нет разрыва". Так что совпадающее копирование/вставка предупреждающего сообщения в комментарий работало в вашем случае:
Как вы можете видеть, текст не должен быть точным совпадением, и он также не чувствителен к регистру.
Ссылаясь на ваш следующий вопрос о неиспользуемых переменных: при настройке Unused variable in file scope
вы можете определить имена переменных, которые следует игнорировать:
Существует два загадочных предопределенных исключения "@(#)" и "$ Id". К сожалению, я не смог найти официальную документацию, поэтому я просмотрел источник. Похоже, что checker просто проверяет, есть ли переменное имя
contains()
любое из указанных исключений. Если это произойдет, предупреждение будет подавлено.
За пределами Eclipse CDT существует популярный трюк с пустым литьем. Если компилятор предупреждает о неиспользуемой переменной, отбросьте ее на void. Эта операция не действует, поэтому она безопасна, но с точки зрения компилятора эта переменная теперь используется. Я обычно обертываю его в макрос, чтобы совершенно ясно понять, что я делаю, например.
#define UNUSED(var) (void)(var)
void foobar()
{
int b; // not used.
UNUSED(b); // now it used
}
Решил.
Я только что добавил текст из предупреждения, которое я хотел проигнорировать, чтобы сразу перейти туда, где будет разрыв.
Вот так:
case enChC:
++nChannel;
//No break at the end of case
case enChD:
++nChannel;
Как сказано, в этом конкретном случае его можно решить, добавив комментарий:
//no break
или
//no break at the end of case
Что действительно важно, так это (без разрыва).
Но также требуется, чтобы у вас не было больше комментариев между концом этого случая и следующим, или оно не будет работать. Например, следующий случай все равно приведет к предупреждению:
case enChC:
++nChannel;
//No break
//This second case decrease the value
case enChD:
++nChannel;
Вам нужно перейти на Eclipse Oxygen.3 (or.2).
Начиная с этих версий предупреждения или маркеры могут быть подавлены просто с помощью "Быстрого исправления".
Я столкнулся с этим вопросом, и я просто хочу их устранить. Я попытался добавить /* no break */, вы должны убедиться, что он добавлен перед следующим "случаем". Это вопрос, с которым я столкнулся
Это решение, которое я использую:
Чтобы отключить раздражающие уведомления, вам нужно перейти в Preferences- > C/С++ → Editor, а затем снять отметку с опций, которые говорят "Выделить неактивный код", "Показать проблемы при вводе" и т.д. Надеюсь, что это поможет.