Вопрос

В настоящее время я занимаюсь рефакторингом C-проекта, выдавая около 1000 предупреждений. Есть ли способ выделить и отфильтровать эти предупреждения. (например, сделать все предупреждения индекса красными, неиспользованным синим и другими)

Скорее всего, некоторые устройства могут это сделать, но для меня это не решение.

Это было полезно?

Другие советы

Это действительно basic, но я использую grep ...

make 2>&1 | grep --color -iP "\^|warning:|error:|"

просто для того, чтобы быстро обратить внимание на строку ошибки и оскорбительный раздел, на который указывает ^ .

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

Я обнаружил, что другие методы чрезмерно используют цвет, и вы сталкиваетесь с той же проблемой. Полагаю, что вы также можете добавить цветовые escape-последовательности с помощью sed .

Gcc 4.9, кажется, добавил эту функцию с помощью флага -fdiagnostics-color: http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html#index-fdiagnostics-color-246

warn_summary довольно приятный сценарий

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

gcc <...> | tee buildoutput
warn_summary -s 0 -wpass buildoutput
warn_summary -s 0 buildoutput

Вы можете передать вывод вашей компиляции через grep:

make 2> error.txt; grep -e error error.txt

Компиляция в emacs дает вам некоторую подсветку. Предположительно детали поддаются настройке.

Используйте M-x compile и введите обычную команду сборки (по умолчанию make -k ).

Я использую красивую марку , которая прекрасно форматирует и раскрашивает вывод gcc. Формат с отступом для параметров команды очень понятен. В итоге я взломал его, чтобы заменить устаревший popen2 на подпроцесс.

Этот ответ больше относится к общему подходу к переработке старого кода на языке C.

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

Если вы выполняете рефакторинг старого C-проекта, довольно часто большинство предупреждений сводятся к различным вещам, таким как старые функции K'n'R dec, ранее разрешенные приведения теперь подсвечиваются предупреждением, с использованием устаревших функций и т. д.

Предполагая, что вы используете (g) make для сборки проекта, я бы запустил компиляцию с помощью следующей команды:

gmake 2>&1 | tee results

Затем вы можете просмотреть файл результатов и посмотреть, какие самые популярные предупреждения вы получаете. Начните с устранения всех существующих предупреждений, прежде чем приступать к рефакторингу базы кода.

Запуск make изнутри vim дает вам много возможностей соединить сообщения об ошибках и предупреждения с исходными файлами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top