Инструмент для обнаружения проблем стиля для кода на С++?

102
12

Я наследую довольно большую базу кода, которая, к сожалению, демонстрирует много "вредных привычек". Один из моих самых больших личных питомцев - объявление нескольких переменных в одном выражении:


int x, y, z;

лично я предпочитаю:


int x;
int y;
int z;

это позволяет мне легко настраивать типы по отдельности и избегать проблем с такими типами указателей, как это:


int *x, y, z; // whoops I meant to make y and z pointers too!

Кроме того, мне бы хотелось обнаружить, когда тип, размер которого больше sizeof(void*), передается по значению.


Есть и другие "стильные" проблемы, которые я хотел бы обнаружить и исправить, но это самые раздражающие IMO. Каковы наилучшие инструменты для этого?

спросил(а) 2011-11-03T19:08:00+04:00 9 лет, 1 месяц назад
1
Решение
59

Я чувствую, что стиль, который вы хотите использовать, зависит от ваших потребностей. Поэтому вам нужно настроить инструмент, чтобы делать проверки для вас.


Я считаю, что ваш пример (предполагая, что ваша база кода достаточно велика, чтобы сделать это стоящим) является очень хорошим примером для настройки компилятора.


Недавние (т.е. 4.6) версии GCC могут быть расширены через plugins, и вы также можете расширить GCC, настроив его с помощью GCC MELT, который является языком высокого уровня для домена для облегчения разработки расширений GCC.


Конечно, для расширения GCC (либо путем кодирования плагинов в C, либо расширений в MELT) вам нужно понять его внутренние представления (в частности, Gimple и Tree), что действительно требует некоторой работы.


P.S. Я являюсь основным разработчиком GCC MELT.

ответил(а) 2011-11-03T19:15:00+04:00 9 лет, 1 месяц назад
73

Я использую "Художественный стиль" или "астайл" для форматирования моих кодов С++ и JAVA с примерно 2-х лет. Его можно настроить очень подробно. теперь есть много лучших...

Но это очень полезно для меня.

ответил(а) 2011-11-03T19:25:00+04:00 9 лет, 1 месяц назад
72

Одним из лучших инструментов, которые я использовал, для проверки стиля файлов на С++ является KWStyle. Однако я не совсем уверен, поддерживает ли он все ваши требования.

ответил(а) 2011-11-03T19:23:00+04:00 9 лет, 1 месяц назад
59

Вы можете попробовать cppcheck для статического анализа кода. Этот вопрос и его ответы дают больше советов по инструментам для анализа статического кода.

ответил(а) 2011-11-03T19:18:00+04:00 9 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема