forked from qt-creator/qt-creator
ClangTools: Support doc urls for pre-relase clang-tidy
Change-Id: I9c28b5846d576d0b17c2e36f790d59b6bb005f6b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "clangtoolsconstants.h"
|
#include "clangtoolsconstants.h"
|
||||||
#include "clangtoolsutils.h"
|
#include "clangtoolsutils.h"
|
||||||
|
#include "executableinfo.h"
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <cppeditor/clangdiagnosticconfig.h>
|
#include <cppeditor/clangdiagnosticconfig.h>
|
||||||
@@ -206,14 +207,18 @@ void ClangToolsSettings::setClazyStandaloneExecutable(const FilePath &path)
|
|||||||
m_clazyVersion = {};
|
m_clazyVersion = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
static QVersionNumber getVersionNumber(QVersionNumber &version, const FilePath &toolFilePath)
|
static VersionAndSuffix getVersionNumber(VersionAndSuffix &version, const FilePath &toolFilePath)
|
||||||
{
|
{
|
||||||
if (version.isNull() && !toolFilePath.isEmpty())
|
if (version.first.isNull() && !toolFilePath.isEmpty()) {
|
||||||
version = QVersionNumber::fromString(queryVersion(toolFilePath, QueryFailMode::Silent));
|
const QString versionString = queryVersion(toolFilePath, QueryFailMode::Silent);
|
||||||
|
int suffixIndex = versionString.length() - 1;
|
||||||
|
version.first = QVersionNumber::fromString(versionString, &suffixIndex);
|
||||||
|
version.second = versionString.mid(suffixIndex);
|
||||||
|
}
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVersionNumber ClangToolsSettings::clangTidyVersion()
|
VersionAndSuffix ClangToolsSettings::clangTidyVersion()
|
||||||
{
|
{
|
||||||
return getVersionNumber(instance()->m_clangTidyVersion, Internal::clangTidyExecutable());
|
return getVersionNumber(instance()->m_clangTidyVersion, Internal::clangTidyExecutable());
|
||||||
}
|
}
|
||||||
|
@@ -25,13 +25,13 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "executableinfo.h"
|
|
||||||
|
|
||||||
#include <cppeditor/clangdiagnosticconfig.h>
|
#include <cppeditor/clangdiagnosticconfig.h>
|
||||||
|
|
||||||
|
#include <utils/filepath.h>
|
||||||
#include <utils/id.h>
|
#include <utils/id.h>
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QPair>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QVersionNumber>
|
#include <QVersionNumber>
|
||||||
|
|
||||||
@@ -40,6 +40,8 @@ namespace Internal {
|
|||||||
|
|
||||||
const char diagnosticConfigIdKey[] = "DiagnosticConfig";
|
const char diagnosticConfigIdKey[] = "DiagnosticConfig";
|
||||||
|
|
||||||
|
using VersionAndSuffix = QPair<QVersionNumber, QString>;
|
||||||
|
|
||||||
class RunSettings
|
class RunSettings
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -90,7 +92,7 @@ public:
|
|||||||
RunSettings runSettings() const { return m_runSettings; }
|
RunSettings runSettings() const { return m_runSettings; }
|
||||||
void setRunSettings(const RunSettings &settings) { m_runSettings = settings; }
|
void setRunSettings(const RunSettings &settings) { m_runSettings = settings; }
|
||||||
|
|
||||||
static QVersionNumber clangTidyVersion();
|
static VersionAndSuffix clangTidyVersion();
|
||||||
static QVersionNumber clazyVersion();
|
static QVersionNumber clazyVersion();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -111,7 +113,7 @@ private:
|
|||||||
RunSettings m_runSettings;
|
RunSettings m_runSettings;
|
||||||
|
|
||||||
// Version info. Ephemeral.
|
// Version info. Ephemeral.
|
||||||
QVersionNumber m_clangTidyVersion;
|
VersionAndSuffix m_clangTidyVersion;
|
||||||
QVersionNumber m_clazyVersion;
|
QVersionNumber m_clazyVersion;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -341,14 +341,18 @@ QStringList extraClangToolsAppendOptions()
|
|||||||
|
|
||||||
QString clangTidyDocUrl(const QString &check)
|
QString clangTidyDocUrl(const QString &check)
|
||||||
{
|
{
|
||||||
QVersionNumber version = ClangToolsSettings::clangTidyVersion();
|
VersionAndSuffix version = ClangToolsSettings::clangTidyVersion();
|
||||||
version = QVersionNumber(version.majorVersion(), 0, 0);
|
version.first = QVersionNumber(version.first.majorVersion(), 0, 0);
|
||||||
if (version == QVersionNumber(0))
|
if (version.first == QVersionNumber(0))
|
||||||
version = QVersionNumber(12);
|
version.first = QVersionNumber(12);
|
||||||
static const char urlTemplate[]
|
static const char versionedUrlPrefix[]
|
||||||
= "https://releases.llvm.org/%1/tools/clang/tools/extra/docs/clang-tidy/checks/";
|
= "https://releases.llvm.org/%1/tools/clang/tools/extra/docs/";
|
||||||
QString url = QString::fromLatin1(urlTemplate).arg(version.toString());
|
static const char unversionedUrlPrefix[] = "https://clang.llvm.org/extra/";
|
||||||
if (version.majorVersion() < 15) {
|
QString url = version.second.contains("git")
|
||||||
|
? QString::fromLatin1(unversionedUrlPrefix)
|
||||||
|
: QString::fromLatin1(versionedUrlPrefix).arg(version.first.toString());
|
||||||
|
url.append("clang-tidy/checks/");
|
||||||
|
if (version.first.majorVersion() < 15) {
|
||||||
url.append(check);
|
url.append(check);
|
||||||
} else {
|
} else {
|
||||||
const int hyphenIndex = check.indexOf('-');
|
const int hyphenIndex = check.indexOf('-');
|
||||||
|
Reference in New Issue
Block a user