Getting kdev-clang-tidy into public consumption

Friedrich W. H. Kossebau kossebau at kde.org
Mon Aug 6 15:52:31 BST 2018


Hi,

tl;dr  I adopted kdev-clang-tidy and will do some often-and-early releases 
before proposing inclusion in kdevelop repo.


Inspired by Anton Anikin's work on a Clazy analyzer plugin ( https://
phabricator.kde.org/D14288 ) and some own increased usage of clang-tidy 
recently I decided to give the kdev-clang-tidy plugin a look, which has been 
idling for more than a year in playground now.

Found that it is working at least for running clang-tidy on files and 
presenting the result in the problem reporter. Though then it had some loose 
ends in the config UI as well as one big unfinished review request for some 
overhaul of the config logic.
So I decided to just cut off all the loose ends and am currently seeing to 
turn the plugin into something which works stable with a first minimal feature 
set, and push that out as a first release, so it might be already delivered 
via (rolling) distributions and be useful to early adaptors (besides those 
running from development branch anyway :) ).

The first initial release should still happen this week, targetting KDevelop 
5.2 installations as an optional add-on. Further releases would then happen 
added-feature-by-added-feature.
No translation string freezes for the first few releases, to allow really 
quick turn-around and flexibility on strings, later-on with >1 week feature 
release cycle will then turn to normal handling, with a week's freeze and 
stabilizing.

Initial feature set:
* run clang-tidy on a single file, with result shown in Problems toolview,
  invokable from file context menus and main menu (Analyzer section)
* per-project config UI:
  * free field for additional cmdl parameters to clang-tidy
  * checkbox whether to include system headers in check
  * toggle between using .clang-tidy files or options in the config UI:
    * header filter reg expr
    * opt-in list of checks

Planned features (in rough order of execution):
* tree-like display of checks, allow selecting of groups (matching the 
wildcard/masking logic of the -checks= parameter)
* warning about missing compilation database
* fix-its (initial code already has some parsing code for the patches created 
by clang-tidy, need to look e.g. into the grep tool to see how to apply these 
following the kdevplatform way)
* running on more than one file, e.g. the whole project
* globally defined sets of checks, for reuse between projects and use for 
specific code analyze work
* folder-specific clang-tidy settings
* being an editor for .clang-tidy files, for seamless integration between IDE-
based and console-based usage of clang-tidy

Long term I think kdev-clang-tidy could be added to the kdevelop repo together 
with the kdev-clazy plugin, to join their cppcheck buddy.
At least until somebody implemented any possible integration of these clang-
based analysers with the clang-parser of the clang language plugin. Which 
though might be more challenging, so the current explicit analyzer plugins 
serve as intermediate utilities.
For ensuring the existance of the needed compilation database I have already 
started to sketch some additional interface ICompilationDatabaseProvider, 
which e.g. CMakeManager would then implement, to allow the analyzers to check 
for the generation of that database and offering the user to turn it off via a 
single click.

After the initial release it might also make sense to add kdev-clang-tidy to 
the appimage, so more people have access to it.

Looking forward for any cooperation :)

Now, your comments?

Cheers
Friedrich




More information about the KDevelop-devel mailing list