Знаете ли вы, как я могу заставить сплинт игнорировать, где я объявляю свои переменные?
Я знаю, что старая школа c говорит вам объявлять переменные прямо в
начиная с каждой функции,
но так как я плохой человек, мне нравится объявлять вещи, близкие к тому, где я их использую.
Хороший пример - поставить int i; прямо перед (я = 0; ...).
Давайте рассмотрим очень простой пример
#include <stdio.h>
int main()
{
printf("Hello splint test\n");
int i;
for(i=5;i>0;i--)
{
printf("%2d...\n",i);
}
return 0;
}
Здесь splint и большинство старых c-компиляторов хотели бы переместить int i; до одной строки,
или поставить {} вокруг объявления и цикла for.
А теперь к вопросу, как мне отключить эту проверку?
Но держать другие проверки, это хорошо?
Спасибо
Johan
Примечание 1: я уже использую предупреждения gcc (см. Ниже) в качестве первой строки защиты,
и валгринд как второй.
Но я думаю о добавлении шины в мой список вещей, которые могут контролировать мою глупость ;-)
Но эта проверка просто раздражает,
Предупреждения gcc, которые я использую:
-Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror
Примечание 2:
Я знаю о потенциальных проблемах переносимости, которые могут возникнуть из-за этого плохого поведения.
Но я чувствую, что это повышает читабельность, то есть не нужно прыгать вверх и вниз для поиска объявлений этого типа вне объявления, что более ценно (и это мы можем обсудить в другой теме)
Обновление :
Немного больше информации, я поместил приведенный выше код в файл с именем main.c.
Используемая платформа: Ubuntu 8.04 и gvim в качестве редактора.
и это вывод от шины при запуске:
splint +gnuextensions main.c
Splint 3.1.1 --- 03 Nov 2006
Command Line: Setting +gnuextensions redundant with current value
main.c:8:8: Parse Error. (For help on parse errors, see splint -help
parseerrors.)
И это открывает еще 2 вопроса, о которых я раньше не думал.
"избыточно с текущим значением", какое текущее значение?
Почему это ошибка разбора, а не предупреждение?
Обновление: :
Существует возможность исправления шины для поддержки этой проблемы,
Я не пробовал это, но пока, но я думаю, что это решение.