[cfe-dev] clang-refactoring tool proposal

Piotr Padlewski via cfe-dev cfe-dev at lists.llvm.org
Tue Aug 9 10:27:09 PDT 2016

I think that clang-refactor is a good idea.

On Tue, Aug 9, 2016 at 8:52 AM, Kirill Bobyrev via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Thanks to Saleem Abdulrasool for originally proposing this approach in the
> mentioned discussion.
> +CC: Saleem Abdulrasool
> On Tue, Aug 9, 2016 at 2:07 PM, Kirill Bobyrev <kbobyrev at google.com>
> wrote:
>> Hi everyone!
>> As you know we have several useful Clang-based tools: clang-format for
>> code formatting, clang-tidy for for diagnosing and fixing typical
>> programming errors, clang-include-fixer for automatic management of
>> #include directives and a few others.
>> I am working on clang-rename, whose purpose is to perform efficient
>> renaming actions in large-scale projects such as renaming classes,
>> functions, variables, arguments, namespaces etc. It is clearly meant for
>> refactoring code and doesn’t fit into any of above mentioned tools. And at
>> this point we only have clang-rename for code refactoring.
>> However, there are many other interesting refactoring actions, which are
>> typically provided by third-party editor plugins or IDEs (and which we
>> ideally would like to have), such as:
>> * Extract method
>> * Inline local variable, method or constant
>> * Change method signature
>> And many others. For a sample list of some popular refactoring techniques
>> see Eclipse Refactorings list (http://help.eclipse.org/neon/
>> index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%
>> 2Fref-menu-refactor.htm) and ReSharper C++ Refactoring (
>> https://www.jetbrains.com/resharper-cpp/features/#refactorings).
>> We recently had a related short discussion in
>> https://reviews.llvm.org/D23279, which introduced a simple tool for
>> field reordering. The main point is that neither clang-rename nor
>> clang-tidy are a good place for such a tool, but we don’t want to end up
>> with too many binaries in clang-tools-extra, too.
>> My proposed solution is to create clang-refactor tool, which would be an
>> “umbrella” for other refactoring modules. A prototype of clang-refactor
>> would merge clang-rename inside of it and other modules and refactorings
>> would be added later.
>> A properly designed clang-refactor tool would be able to process multiple
>> Translation Units, which is crucial for all mentioned refactorings.
>> I am very excited about the idea of having Clang-based refactoring tool
>> and I see a lot of potential in it.
>> I want to bring up a Community discussion and get feedback on these ideas.
>> Best regards,
>> Kirill Bobyrev
> --
> Best regards,
> Kirill Bobyrev
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160809/50eb6f42/attachment.html>

More information about the cfe-dev mailing list