From 74385cc10c9af17e15999e3ac0f34de85882d2b7 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 24 Jun 2021 16:25:40 +0200 Subject: [PATCH] ClangTools: Make sure URL for clang-tidy checks is always correct Fixes: QTCREATORBUG-25902 Change-Id: Ifadb6c90cf9a86fc4efb734d6105217b70f9419d Reviewed-by: David Schulz --- src/plugins/clangtools/clangtoolsutils.cpp | 13 ++++++++++++- src/plugins/clangtools/clangtoolsutils.h | 2 ++ src/plugins/clangtools/diagnosticconfigswidget.cpp | 3 +-- src/plugins/cpptools/cpptoolsconstants.h | 8 -------- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/plugins/clangtools/clangtoolsutils.cpp b/src/plugins/clangtools/clangtoolsutils.cpp index 5522fdbb4d6..1c425d115ae 100644 --- a/src/plugins/clangtools/clangtoolsutils.cpp +++ b/src/plugins/clangtools/clangtoolsutils.cpp @@ -308,7 +308,7 @@ QString documentationUrl(const QString &checkName) } else if (name.startsWith(clangStaticAnalyzerPrefix)) { url = CppTools::Constants::CLANG_STATIC_ANALYZER_DOCUMENTATION_URL; } else { - url = QString(CppTools::Constants::TIDY_DOCUMENTATION_URL_TEMPLATE).arg(name); + url = clangTidyDocUrl(name); } return url; @@ -351,5 +351,16 @@ QStringList extraClangToolsAppendOptions() return options; } +QString clangTidyDocUrl(const QString &check) +{ + QVersionNumber version = ClangToolsSettings::clangTidyVersion(); + version = QVersionNumber(version.majorVersion(), 0, 0); + if (version == QVersionNumber(0)) + version = QVersionNumber(12); + static const char urlTemplate[] + = "https://releases.llvm.org/%1/tools/clang/tools/extra/docs/clang-tidy/checks/%2.html"; + return QString::fromLatin1(urlTemplate).arg(version.toString(), check); +} + } // namespace Internal } // namespace ClangTools diff --git a/src/plugins/clangtools/clangtoolsutils.h b/src/plugins/clangtools/clangtoolsutils.h index 4ee378cdc1e..295af853a44 100644 --- a/src/plugins/clangtools/clangtoolsutils.h +++ b/src/plugins/clangtools/clangtoolsutils.h @@ -42,6 +42,8 @@ namespace Debugger { class DiagnosticLocation; } namespace ClangTools { namespace Internal { +QString clangTidyDocUrl(const QString &check); + class Diagnostic; enum class FixitStatus { diff --git a/src/plugins/clangtools/diagnosticconfigswidget.cpp b/src/plugins/clangtools/diagnosticconfigswidget.cpp index 96196aa4561..779a615d0d0 100644 --- a/src/plugins/clangtools/diagnosticconfigswidget.cpp +++ b/src/plugins/clangtools/diagnosticconfigswidget.cpp @@ -449,8 +449,7 @@ public: // 'clang-analyzer-' group if (node->isDir) return CppTools::Constants::CLANG_STATIC_ANALYZER_DOCUMENTATION_URL; - return QString::fromUtf8(CppTools::Constants::TIDY_DOCUMENTATION_URL_TEMPLATE) - .arg(node->fullPath.toString()); + return clangTidyDocUrl(node->fullPath.toString()); } return BaseChecksTreeModel::data(fullIndex, role); diff --git a/src/plugins/cpptools/cpptoolsconstants.h b/src/plugins/cpptools/cpptoolsconstants.h index 7ee83c1f707..9b5b1c6f64e 100644 --- a/src/plugins/cpptools/cpptoolsconstants.h +++ b/src/plugins/cpptools/cpptoolsconstants.h @@ -95,14 +95,6 @@ const char LOCATOR_FILTER_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("CppTools", "C++ Cl const char SYMBOLS_FIND_FILTER_ID[] = "Symbols"; const char SYMBOLS_FIND_FILTER_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("CppTools", "C++ Symbols"); -// CLANG-UPGRADE-CHECK: Checks/update URLs. -// -// Upgrade the version in the URL. Note that we cannot use the macro -// CLANG_VERSION here because it might denote a version that was not yet -// released (e.g. 6.0.1, but only 6.0.0 was released). -constexpr const char TIDY_DOCUMENTATION_URL_TEMPLATE[] - = "https://releases.llvm.org/11.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/%1.html"; - constexpr const char CLANG_STATIC_ANALYZER_DOCUMENTATION_URL[] = "https://clang-analyzer.llvm.org/available_checks.html";