Инструмент для обнаружения проблем стиля для кода C ++? - PullRequest
5 голосов
/ 03 ноября 2011

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

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*), передается по значению.

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

Ответы [ 4 ]

2 голосов
/ 03 ноября 2011

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

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

2 голосов
/ 03 ноября 2011

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

1 голос
/ 03 ноября 2011

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

1 голос
/ 03 ноября 2011

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

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

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

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

P.S. Я главный разработчик GCC MELT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...