Clang: enable clang tidy and clazy in code model

Set QTC_CLANG_PLUGINS_LOAD env variable to get diagnostics
that come from libclang plugins.
This functionality works after the patch is applied to
clang repository and clang is properly built with it.

Task-number: QTCREATORBUG-15157
Change-Id: Iefeee4dd115f3f43ddc6ed79452a1135e653def6
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Ivan Donchevskii
2017-10-20 14:04:13 +02:00
parent 7af341fe56
commit 58e8904856
3 changed files with 171 additions and 0 deletions

View File

@@ -79,6 +79,12 @@ static QString creatorResourcePath()
#endif
}
static bool loadClangPlugins()
{
static bool load = qEnvironmentVariableIntValue("QTC_CLANG_PLUGINS_LOAD");
return load;
}
class LibClangOptionsBuilder final : public CompilerOptionsBuilder
{
public:
@@ -96,6 +102,10 @@ public:
void addExtraOptions() final
{
addDummyUiHeaderOnDiskIncludePath();
if (loadClangPlugins()) {
addTidyPlugin();
addClazyPlugin();
}
add("-fmessage-length=0");
add("-fdiagnostics-show-note-include-stack");
add("-fmacro-backtrace-limit=0");
@@ -123,6 +133,26 @@ private:
if (!path.isEmpty())
add(includeDirOption() + QDir::toNativeSeparators(path));
}
void addClazyPlugin()
{
add("-Xclang");
add("-add-plugin");
add("-Xclang");
add("clang-lazy");
}
void addTidyPlugin()
{
add("-Xclang");
add("-add-plugin");
add("-Xclang");
add("clang-tidy");
add("-Xclang");
add("-plugin-arg-clang-tidy");
add("-Xclang");
add("-checks='-*,clang-diagnostic-*,llvm-*,misc-*,-misc-unused-parameters,readability-identifier-naming'");
}
};
/**