是否有C++重构模式作为一组Clang工具实现?

myW*_*SON 7 c++ clang

所以我在Clang工具上发现了很好的视频 ...并且不禁让人怀疑:是否有任何示例代码库/编译工具套件用于完整的项目美化和清理(类似于C#resharper)?项目规模的代码格式化,例如:行尾的额外空间,成员/类命名的统一,{}括号之后如何放置if等等的方式?

Dav*_*hop 7

Clang的libtooling是相当新的,因此目前没有太多基于它的.

另外根据我的经验,链接是很痛苦的(没有llvm-config的clang版本,在教程中,开发人员似乎认为人们将在完整的clang repo中构建他们的工具,而不是作为好的单独项目.Ubuntu构建的clang只包含libtooling作为静态.a,没有.so.Ubuntu的官方LLVM夜间构建似乎根本不包括静态libclangTooling.a.

包括-什么,你使用它的目的是删除未使用的头文件.

clReflect产生反射绑定.(不确定这实际上是使用libtooling还是只是libclang,但它是同样的东西.)

还有重构支持其他一些操作.

作为clang的一部分,有一些工具包含在内.最值得注意的是一个c ++ 11迁移工具.还有一个模块工具(一个正在为未来版本的C++工作的功能).

一旦它起飞,这个东西应该是非常有用和强大的.

我个人正在尝试(目前不成功)构建一个简单的CLI重构因子工具,cppmv旨在让你重命名类,函数,变量,移动它们在名称空间等等同时保持其用途同步,但我不在这个阶段有任何有用的东西.其他工具可以是cppls(列出命名空间,类函数等).也许cppcp,如果你想出于某种原因复制一些东西(例如你可以有一个'模板'类),但它看起来不太有用.

我还在考虑制作一个FUSE用户空间文件系统,让你可以安装和浏览你的项目,这样你就可以使用传统的'mv'和'cp'命令,但这更像是学习FUSE的借口,而不是因为它有用以这种方式做事.尽管可以在他们自己独立的"文件"中编辑特定类和函数的源代码,尽管这对IDE等许多内容都没用,因为你会丢失有关头文件等的信息.

拥有一个实时的"看到你编辑",基于ASTMatcher的工具或一些简单的重新分解脚本语言绑定也是一件好事.

编辑:现在还有代码样式格式的clang格式和(截至3.4)用于Vim集成的clang-format.py脚本.clang-apply-replacements" 查找包含序列化替换的文件,并在重复数据删除和检测冲突后应用这些更改. "

可能值得一看这个视频,其中一些内容被演示.