ClangTools: Make sure URL for clang-tidy checks is always correct

Fixes: QTCREATORBUG-25902
Change-Id: Ifadb6c90cf9a86fc4efb734d6105217b70f9419d
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2021-06-24 16:25:40 +02:00
parent bf6f446a35
commit 74385cc10c
4 changed files with 15 additions and 11 deletions

View File

@@ -308,7 +308,7 @@ QString documentationUrl(const QString &checkName)
} else if (name.startsWith(clangStaticAnalyzerPrefix)) { } else if (name.startsWith(clangStaticAnalyzerPrefix)) {
url = CppTools::Constants::CLANG_STATIC_ANALYZER_DOCUMENTATION_URL; url = CppTools::Constants::CLANG_STATIC_ANALYZER_DOCUMENTATION_URL;
} else { } else {
url = QString(CppTools::Constants::TIDY_DOCUMENTATION_URL_TEMPLATE).arg(name); url = clangTidyDocUrl(name);
} }
return url; return url;
@@ -351,5 +351,16 @@ QStringList extraClangToolsAppendOptions()
return options; 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 Internal
} // namespace ClangTools } // namespace ClangTools

View File

@@ -42,6 +42,8 @@ namespace Debugger { class DiagnosticLocation; }
namespace ClangTools { namespace ClangTools {
namespace Internal { namespace Internal {
QString clangTidyDocUrl(const QString &check);
class Diagnostic; class Diagnostic;
enum class FixitStatus { enum class FixitStatus {

View File

@@ -449,8 +449,7 @@ public:
// 'clang-analyzer-' group // 'clang-analyzer-' group
if (node->isDir) if (node->isDir)
return CppTools::Constants::CLANG_STATIC_ANALYZER_DOCUMENTATION_URL; return CppTools::Constants::CLANG_STATIC_ANALYZER_DOCUMENTATION_URL;
return QString::fromUtf8(CppTools::Constants::TIDY_DOCUMENTATION_URL_TEMPLATE) return clangTidyDocUrl(node->fullPath.toString());
.arg(node->fullPath.toString());
} }
return BaseChecksTreeModel::data(fullIndex, role); return BaseChecksTreeModel::data(fullIndex, role);

View File

@@ -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_ID[] = "Symbols";
const char SYMBOLS_FIND_FILTER_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("CppTools", "C++ 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[] constexpr const char CLANG_STATIC_ANALYZER_DOCUMENTATION_URL[]
= "https://clang-analyzer.llvm.org/available_checks.html"; = "https://clang-analyzer.llvm.org/available_checks.html";