Очистка кода — Найти и пометить константные переменные и константные функции в переполнении стека

У меня большая база кода C ++ (500 000+ LOC, 10k файлов), и я доволен кодом, но с ним есть несколько проблем:

const не был использован так часто, как следовало бы. Например:

class A
{
int foo( B &a )
{
return a.v * 10;
}
};

действительно должно быть изменено на:

class A
{
int foo( const B &a )  const
{
return a.v * 10;
}
};

Похоже, что компилятор должен знать, в большинстве случаев, когда функция может быть const.

Он также был написан на стандартном C ++ с начала 2000-х годов. Я хотел бы изменить, чтобы использовать авто и для петель диапазона так

 std::map< int, std::string >::iterator i = m.start();
for ( ; i != m.end(); i++
...;

в

for ( const auto p : m )
...;

Я мог бы взломать что-то вместе с Perl и / или Sed, что, вероятно, найдет большинство случаев, потому что код соответствует нашим внутренним стандартам, но мне просто интересно, есть ли реальный инструмент, который будет делать это и другие вещи, которые мы можем захотеть сделать? Как вы переводите устаревший код C ++ в новый стандарт?

3

Решение

Ваша проблема, кажется, прекрасная возможность использовать ReSharper для C ++ если ваш код организован в решение Visual Studio. Он все еще находится в разработке, но благодаря этому свободно.

Он содержит множество встроенных проверок кода, и вы можете выполнить очистку кода в рамках всего решения. Я использую его версию на C # ежедневно, и, хотя версия на C ++ еще многое предстоит наверстать, она кажется подходящим инструментом для вашей ситуации.

0

Другие решения


По вопросам рекламы [email protected]