Announcing an official home for tools built on the Clang platform, as part of the Clang project

Hello everyone!

As you may have noticed with various email and commits going about recently, we’re opening up an official home and structure for developing developer-facing tools as part of the Clang project.

This is intended to be a place where the community can develop refactoring tools, analysis tools, and other code-oriented, Clang-based tools that make writing C, C++, Objective C, and Objective C++ code easy and fun.

I’ve started seeding documentation about this, currently oriented mostly at fellow tool developers. As we build a collection of tools, we’ll be working on better user-facing documentation and packaging, but the immediate pressing need is to get a good place to collaborate on these tools together, and start building awesome new things.

Documentation: http://clang.llvm.org/docs/ClangTools.html
Repository: http://llvm.org/svn/llvm-project/clang-tools-extra/trunk
Git mirror: http://llvm.org/git/clang-tools-extra.git
Getting started: http://clang.llvm.org/get_started.html

I’ve added one of the tools that we built here at Google when initially developing this framework as an example of how tools in this tree should be structured. It’s not the best tool, but it is simple and a good starting point. The build systems (both Makefiles and CMake) have been updated so that the extra repository should just work when dropped in the right place.

We’re hoping to get several more tools that have already started to be developed by the community moved into a new home here. However, we’re still ironing out the exact criteria for accepting tools into the Clang project. I want to emphasize – this separate repository is a technical division to enable thinner checkouts of Clang when that is useful. This is not a new or separate project, it is very much part of the Clang project and community, and is being run by the same community. =]

Now, it’s your turn. We’ll have official criteria posted soon, but please feel free to start thinking about and discussing tool ideas. Start contributing to the existing tools and the tooling framework. Sign up for the commit list and watch for progress as we start building the tools developers have wanted for C++ for over two decades. In particular, if anyone is really interested in helping organize and improve our documentation, please send patches.

Happy coding!
-Chandler

PS: I want to thank Manuel for doing the lion’s share of the work to get us here, building most of the tooling infrastructure, and getting it contributed back to Clang. I’d also like to thank Doug for putting up with all of our code reviews, and all his work on Clang in general, building it into this amazing open source community. There are so many others that have helped get us here as well: Zhanyong Wan, Craig Silversteen, all the Clang devs, Marcin Kowalczyk, Marshall Clow, Daniel Jasper, James Dennett and probably a bunch of other people I’m forgetting. Not to mention Chris Lattner, who started all of this. Thanks.

Here’s a patch that implements a “skeleton” refactoring tool; i.e, a starting point for the development of other tools.
It contains all the boilerplate stuff needed to get a tool up and running, missing only the AST matchers to find the things to refactor, and the code to actually change the code.

Works with this morning’s TOT.

– Marshall

Marshall Clow Idio Software <mailto:mclow.lists@gmail.com>

A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait).
– Yu Suzuki

refactoringTemplate-3.patch (6.3 KB)