подсвечивать и фильтровать (gcc) сообщения компилятора - PullRequest
4 голосов
/ 23 июня 2009

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

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

Ответы [ 8 ]

6 голосов
/ 14 августа 2014

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

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

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

enter image description here

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

5 голосов
/ 23 июня 2009

Попробуйте пакет colorgcc Debian . Я также нашел три других пакета: colorgcc Йоханнеса Шлютера, или этот пакет на немецком , или этот проект Sourceforge

2 голосов
/ 13 апреля 2014

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

1 голос
/ 26 декабря 2012

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

make 2> error.txt; grep -e error error.txt
1 голос
/ 16 ноября 2011

Сценарий warn_summary довольно хорош

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

gcc <...> | tee buildoutput
warn_summary -s 0 -wpass buildoutput
warn_summary -s 0 buildoutput
0 голосов
/ 18 августа 2012

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

0 голосов
/ 23 июня 2009

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

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

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

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

gmake 2>&1 | tee results

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

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

0 голосов
/ 23 июня 2009

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

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

...