forked from qt-creator/qt-creator
ClangTools: Make sure clazy doc URL corresponds to tool version
Note that this will only work with clazy >= 1.10. For earlier versions, we fall back to the master branch documentation, as before. Fixes: QTCREATORBUG-25869 Change-Id: I7a8188eda15c4e0548bfaa63aa90f721aa44d6c2 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -227,8 +227,7 @@ QVersionNumber ClangToolsSettings::clangTidyVersion()
|
||||
|
||||
QVersionNumber ClangToolsSettings::clazyVersion()
|
||||
{
|
||||
return getVersionNumber(instance()->m_clazyVersion,
|
||||
ClangTools::Internal::clazyStandaloneExecutable());
|
||||
return ClazyStandaloneInfo(ClangTools::Internal::clazyStandaloneExecutable()).version;
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -304,7 +304,7 @@ QString documentationUrl(const QString &checkName)
|
||||
const QString clangStaticAnalyzerPrefix = "clang-analyzer-core.";
|
||||
if (name.startsWith(clazyPrefix)) {
|
||||
name = checkName.mid(clazyPrefix.length());
|
||||
url = QString(CppTools::Constants::CLAZY_DOCUMENTATION_URL_TEMPLATE).arg(name);
|
||||
url = clazyDocUrl(name);
|
||||
} else if (name.startsWith(clangStaticAnalyzerPrefix)) {
|
||||
url = CppTools::Constants::CLANG_STATIC_ANALYZER_DOCUMENTATION_URL;
|
||||
} else {
|
||||
@@ -362,5 +362,16 @@ QString clangTidyDocUrl(const QString &check)
|
||||
return QString::fromLatin1(urlTemplate).arg(version.toString(), check);
|
||||
}
|
||||
|
||||
QString clazyDocUrl(const QString &check)
|
||||
{
|
||||
QVersionNumber version = ClangToolsSettings::clazyVersion();
|
||||
if (!version.isNull())
|
||||
version = QVersionNumber(version.majorVersion(), version.minorVersion(), 0);
|
||||
const QString versionString = version.isNull() ? "master" : version.toString();
|
||||
static const char urlTemplate[]
|
||||
= "https://github.com/KDE/clazy/blob/%1/docs/checks/README-%2.md";
|
||||
return QString::fromLatin1(urlTemplate).arg(versionString, check);
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClangTools
|
||||
|
||||
@@ -43,6 +43,7 @@ namespace ClangTools {
|
||||
namespace Internal {
|
||||
|
||||
QString clangTidyDocUrl(const QString &check);
|
||||
QString clazyDocUrl(const QString &check);
|
||||
|
||||
class Diagnostic;
|
||||
|
||||
|
||||
@@ -629,8 +629,7 @@ private:
|
||||
if (role == LinkRole || role == Qt::ToolTipRole) {
|
||||
if (node->check.name.isEmpty())
|
||||
return QVariant();
|
||||
return QString::fromUtf8(CppTools::Constants::CLAZY_DOCUMENTATION_URL_TEMPLATE)
|
||||
.arg(node->name);
|
||||
return clazyDocUrl(node->name);
|
||||
}
|
||||
if (role == Qt::DisplayRole && node->kind != ClazyChecksTree::CheckNode)
|
||||
return QVariant();
|
||||
|
||||
@@ -166,7 +166,23 @@ ClangTidyInfo::ClangTidyInfo(const QString &executablePath)
|
||||
ClazyStandaloneInfo::ClazyStandaloneInfo(const QString &executablePath)
|
||||
: defaultChecks(queryClangTidyChecks(executablePath, {})) // Yup, behaves as clang-tidy.
|
||||
, supportedChecks(querySupportedClazyChecks(executablePath))
|
||||
{}
|
||||
{
|
||||
QString output = runExecutable(CommandLine(executablePath, {"--version"}),
|
||||
QueryFailMode::Silent);
|
||||
QTextStream stream(&output);
|
||||
while (!stream.atEnd()) {
|
||||
// It's just "clazy version " right now, but let's be prepared for someone adding a colon
|
||||
// later on.
|
||||
static const QStringList versionPrefixes{"clazy version ", "clazy version: "};
|
||||
const QString line = stream.readLine().simplified();
|
||||
for (const QString &prefix : versionPrefixes) {
|
||||
if (line.startsWith(prefix)) {
|
||||
version = QVersionNumber::fromString(line.mid(prefix.length()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static FilePath queryResourceDir(const FilePath &clangToolPath)
|
||||
{
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <QPair>
|
||||
#include <QStringList>
|
||||
#include <QVector>
|
||||
#include <QVersionNumber>
|
||||
|
||||
namespace ClangTools {
|
||||
namespace Internal {
|
||||
@@ -60,6 +61,8 @@ class ClazyStandaloneInfo
|
||||
{
|
||||
public:
|
||||
ClazyStandaloneInfo(const QString &executablePath);
|
||||
|
||||
QVersionNumber version;
|
||||
QStringList defaultChecks;
|
||||
ClazyChecks supportedChecks;
|
||||
};
|
||||
|
||||
@@ -98,12 +98,5 @@ const char SYMBOLS_FIND_FILTER_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("CppTools", "C
|
||||
constexpr const char CLANG_STATIC_ANALYZER_DOCUMENTATION_URL[]
|
||||
= "https://clang-analyzer.llvm.org/available_checks.html";
|
||||
|
||||
// CLANG-UPGRADE-CHECK: Checks/update URLs.
|
||||
//
|
||||
// Once it gets dedicated documentation pages for released versions,
|
||||
// use them instead of pointing to master, as checks might vanish.
|
||||
constexpr const char CLAZY_DOCUMENTATION_URL_TEMPLATE[]
|
||||
= "https://github.com/KDE/clazy/blob/master/docs/checks/README-%1.md";
|
||||
|
||||
} // namespace Constants
|
||||
} // namespace CppTools
|
||||
|
||||
Reference in New Issue
Block a user