[cfe-dev] [clang-tidy] Some possible contributions
Piotr Dziwinski via cfe-dev
cfe-dev at lists.llvm.org
Thu Aug 27 09:53:30 PDT 2015
Hello,
I am the author of a static analysis tool using Clang's LibTooling which
I wrote for the open-source Colobot project
(https://github.com/colobot/colobot). This tool, which I named
colobot-lint (https://github.com/colobot/colobot-lint), is written using
a framework loosely based on the code of clang-tidy.
Now that my little project has matured enough, I think I may contribute
some of its code back to clang-tidy. However, before I create patches
and send them to cfe-commits, I'd like to hear some discussion on
whether you think my code is generic enough and useful enough to be
included in clang-tidy.
For now I only propose the following two patches based on what I think
is the most generic of what I wrote. My tool does a lot more, but I
won't bore you with details here (if you're curious, it's documented in
README files).
Patch proposal #1: add check for inconsistent parameter names in
function declarations
This will check for instances of function (re-)declarations which differ
in parameter names. For example: void foo(int a, int b, int c); in
header file and void foo(int d, int e, int f) { /*...*/ } in code module
file.
This check may be useful to enforce consistency in a large project,
keeping declaration and definition always in sync. In extreme case, I
think it may even prevent some class of bugs, as declaration may not get
updated during refactoring and then a person writing code against the
outdated interface, may get the wrong idea of what parameters to pass to
the function.
Patch proposal #2: add check for instances of old C-style functions
This will check for instances of legacy functions which use old C-style
convention of declaring all parameters at the beginning of the function:
void foo()
{
int a, i;
/* and later, after many lines in between, there is first use of
declared variables: */
a = bar();
for (i = 0; i < 10; ++i) { /*...*/ }
}
It may be useful for people who have to maintain old codebases and want
to find instances of such functions to refactor them to "modern" C++
style, declaring variables in the place where they are needed. This in
fact is exactly what we're doing in Colobot project and I imagine there
are other projects like that.
Please let me know if you think I should proceed with submitting these
patches. I can also prepare other patches if you think some other parts
of my code would be useful.
Best regards,
Piotr Dziwinski
More information about the cfe-dev
mailing list