如何自动将underscore_identifiers转换为CamelCaseIdentifiers?

时间:2009-10-20 21:27:13

标签: coding-style naming-conventions

我有大量的C ++代码库。使用underscore_identifiers和CamelCaseIdentifiers的地方非常不一致,但在文件组中是一致的。把它想象成一个较小的图书馆合并成一个更大的图书馆。

我想在此项目中将其标准化为Google C++ Style Guide。 我该如何进行半自动化?最好使用Linux工具。

3 个答案:

答案 0 :(得分:1)

在源的根目录上尝试此命令。

find . -name "*.cpp" -exec sed 's/_\([a-zA-Z]\)\([a-zA-Z]*\)/\U\1\E\2/g' {} \;

输出转到STDOUT只是为了测试它。

如果您想直接更改文件,可以将-i选项添加到sed

警告:这将更改文件。先备份!

find . -name "*.cpp" -exec sed -i 's/_\([a-zA-Z]\)\([a-zA-Z]*\)/\U\1\E\2/g' {} \;

当然,您必须检查所有自动更改。请参阅Jim Lewis的评论。

答案 1 :(得分:0)

一个简单的perl脚本就可以了。然后使用-i标志(“替换inplace”)为所有文件运行它。

答案 2 :(得分:0)

从下划线变为驼峰(使用gnu sed):

sed's /([a-zA-Z])_([a-zA-Z])/ \ 1 \ U \ 2 / g'

相反:

sed's /([a-z])([A-Z])/ \ 1_ \ L \ 2 / g'

如果您有勇气,可以使用-i标志就地工作。

[n.b。未经测试我在Mac上并且随附的sed不支持\ U或\ L - 在gnu Linux上你应该没问题]