【问题标题】:Are there C++ refactoring patterns implemented as a set of Clang tools?是否有作为一组 Clang 工具实现的 C++ 重构模式?
【发布时间】:2013-02-24 20:07:46
【问题描述】:

所以我发现nice video on Clang tooling... 并且不禁想知道:是否有任何示例代码库/编译工具套件用于完整的项目美化和清理(类似于 C# resharper)? 项目规模的代码格式,例如:行尾的额外空间、成员/类命名的统一、{}brackets 如何放置在if 之后的方式等?

【问题讨论】:

  • 我猜这将是 XCode 的下一个版本。

标签: c++ clang


【解决方案1】:

Clang 的 libtooling 相当新,因此目前没有太多基于它的工具。

根据我的经验,链接起来也很痛苦(没有 llvm-config 的 clang 版本,在 tutorials 中,开发人员似乎认为人们会在完整的 clang 存储库中构建他们的工具,而不是作为很好的单独项目.clang 的 Ubuntu 构建只包含 libtooling 作为静态 .a,没有 .so。Ubuntu 的官方 LLVM nightly 构建似乎根本不包含静态 libclangTooling.a。

有include-what-you-use 专门用于删除未使用的头文件。

clReflect 会生成反射绑定。 (不确定这实际上是使用 libtooling 还是仅仅使用 libclang,但它是同一类东西。)

还有refactorial支持其他一些操作。

part of clang 包含一些工具。最值得注意的是 Ac++11 migration tool。还有一个模块工具(未来版本的 C++ 正在开发的功能)。

一旦起飞,这东西应该非常有用和强大。

就个人而言,我正在尝试(目前未成功)构建一个简单的 CLI 重构工具 cppmv,它旨在让您重命名类、函数、变量,在命名空间等周围移动它们,同时保持它们的使用同步,但我在这个阶段没有任何有用的东西。其他工具可能是 cppls(列出命名空间、类函数等)。也许是 cppcp,如果你出于某种原因想要复制某些东西(例如,你可以有一个“模板”类),但它似乎没那么有用。

我也在考虑制作一个 FUSE 用户空间文件系统,它可以让你挂载和浏览你的项目,这样你就可以使用传统的“mv”和“cp”命令,但这更多的是学习 FUSE 的借口,而不是因为它以这种方式做事会很有用。尽管可以在它们自己单独的单独“文件”中编辑特定类和函数的源代码,但这对于 IDE 之类的许多东西没有用,因为您会丢失有关标头等的信息。

如果有一个实时的“边看边编辑”、基于 ASTMatcher 的工具或一些简单的重构脚本语言绑定,那也很好。

编辑: 现在还有用于代码样式格式化的 clang-format 和(从 3.4 开始)用于 Vim 集成的 clang-format.py 脚本。 clang-apply-replacements "that finds files containing serialized Replacements and applies those changes after deduplication and detecting conflicts."

可能值得看看this video,其中一些东西是演示的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-22
    • 2010-11-26
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多