[cfe-dev] [clang-tidy] Some possible contributions

Kevin Funk via cfe-dev cfe-dev at lists.llvm.org
Fri Aug 28 07:17:21 PDT 2015


On Thursday 27 August 2015 18:53:30 Piotr Dziwinski via cfe-dev wrote:
> 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.

I also think both checkers make a lot of sense, nice ideas!

Cheers,
Kevin
 
> Best regards,
> Piotr Dziwinski
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-- 
Kevin Funk | kfunk at kde.org | http://kfunk.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150828/70f3cea7/attachment.sig>


More information about the cfe-dev mailing list