在C ++中查找并标记const变量和const函数

时间:2014-08-26 23:45:17

标签: c++ code-cleanup

我有一个很大的C ++代码库(500,000 + LOC,10k文件),我对代码感到满意,但有几个问题:

const没有尽可能多地使用const。例如:

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

应该真的改为:

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

在大多数情况下,编译器应该知道函数可能是const。

自21世纪初以来,它也已用标准C ++编写。我想改为使用自动和范围循环,所以

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

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

我可以和perl和/或sed一起破解可能会发现大多数情况的东西,因为代码与我们的内部标准非常吻合,但我只是想知道是否有一个真正的工具可以做这个以及我们可能想做的其他事情?如何将旧版C ++代码迁移到新标准?

1 个答案:

答案 0 :(得分:0)

如果您的代码被组织到Visual Studio解决方案中,您的问题似乎是使用ReSharper for C++的绝佳机会。它仍在开发中,但由于这个事实,它免费

它包含许多内置的代码检查,您可以执行解决方案范围的代码清理。我每天都使用它的C#版本,虽然C ++版本还有很多东西要赶上它,但它似乎是适合你情况的合适工具。