Refactoring features in KDevelop
Maciej Poleski
d82ks8djf82msd83hf8sc02lqb5gh5 at gmail.com
Mon Feb 23 00:18:17 UTC 2015
Dnia piÄ…tek, 30 stycznia 2015 18:58:21 piszesz:
>
> I think most of them are surely possible *if you implement it properly* as
> AST Rewriter based on libTooling from Clang.
>
> There are quite a few blog posts / papers describing how to do it, for
> instance:
>
> http://eli.thegreenplace.net/2014/05/01/modern-source-to-source-transformat
> ion-with-clang-and-libtooling/
> http://llvm.org/devmtg/2014-04/PDFs/Talks/NickRefactoring.pdf
> ... -> Google!
>
> After reading through those you'll have a pretty good idea about the whole
> tooling aspect of Clang.
>
> But as Milian said, right now it's the perfect time to dive into kdev-clang,
> libclang, and libTooling, to prepare a bit for your GSoC project and to
> show off your skills
>
> Greets
>
Hello
It's almost month since my last message. What I achieved in short.
1 Passed all exams (end of semester).
2 I tried "porting (...) the ability to de-inline a function in a header by
moving its implementation to the accompanying .cpp file". Looked like quite
simple and introductory task. It turned out to 6765 SLOC (still not finished!)
patch consisting of code from around 2007 (part of oldcpp duchain).
I stopped here because of two/three main points:
- What I was working on was in fact moving big pieces of old codebase into
kdev-clang. I'm not sure if we really want to pull in that amount of old code
into new plugin (duplicating some functionality from libClang).
- I would have to implement instantiate method(s) in ClangDuContext. As it
looks like kdev-clang duchain is based on libClang and my work will focus on
libTooling, probably that's not a way I should proceed.
- All of these is about DUChain. In fact I never before considered duchain as
a foundation of refactoring capabilities. DUChain is some kind of abstraction.
Refactoring will most likely (libTooling) require direct access to source code
and simply disable possibility of such abstraction. For now I'm not even sure
if it is possible to abstract storage (use document model instead of on-disk
file).
In fact ability to move code from one place to another will be required for
many refactoring features. It will have to be solved in the most general
situation.
For now I have to work a bit with libTooling to see what can be done with that
and come with more precise design.
What do You think about that? Is DUChain expected to provide refactoring
capabilities or only some, not binding, idea of approach to refactoring? Is
working on DUChain-based old refactoring capabilities worth spending time when
at end We want/have to "escape" from DUChain?
Best Regards
Maciej Poleski
More information about the KDevelop-devel
mailing list