mirror of
https://invent.kde.org/graphics/okular
synced 2024-10-01 05:33:33 +00:00
Use CI environment for clang/clazy
In order to be able to also do this with Qt6 we can't currently rely on 'random distro' to be able to give us an environment sufficient for running clang and clazy, so use the CI system setup instead A side effect is that we get a newer clazy and clang-tidy and thus is a few more issues to either ignore or fix. Also, ask ninja to continue as long as possible rather than stop at first error to be able to get succes in as few runs as possible
This commit is contained in:
parent
ba6db9db04
commit
a9717a8e5f
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
Checks: 'clang-diagnostic-*,clang-analyzer-*,-*,performance-*,bugprone-*,readability-inconsistent-declaration-parameter-name,readability-string-compare,readability-braces-around-statements,modernize-redundant-void-arg,modernize-use-bool-literals,modernize-make-unique,modernize-make-shared,modernize-use-override,modernize-use-equals-delete,modernize-use-emplace,modernize-loop-convert,modernize-use-nullptr,google-explicit-constructor,-bugprone-macro-parentheses,-bugprone-narrowing-conversions,-bugprone-branch-clone,-bugprone-incorrect-roundings,-bugprone-suspicious-include,-bugprone-reserved-identifier,-performance-no-automatic-move,-bugprone-suspicious-enum-usage,-bugprone-easily-swappable-parameters,-performance-no-int-to-ptr,-bugprone-implicit-widening-of-multiplication-result'
|
||||
Checks: 'clang-diagnostic-*,clang-analyzer-*,-*,performance-*,bugprone-*,readability-inconsistent-declaration-parameter-name,readability-string-compare,readability-braces-around-statements,modernize-redundant-void-arg,modernize-use-bool-literals,modernize-make-unique,modernize-make-shared,modernize-use-override,modernize-use-equals-delete,modernize-use-emplace,modernize-loop-convert,modernize-use-nullptr,google-explicit-constructor,-bugprone-assignment-in-if-condition,-bugprone-switch-missing-default-case,-bugprone-macro-parentheses,-bugprone-narrowing-conversions,-bugprone-branch-clone,-bugprone-incorrect-roundings,-bugprone-suspicious-include,-bugprone-reserved-identifier,-performance-no-automatic-move,-bugprone-suspicious-enum-usage,-bugprone-easily-swappable-parameters,-performance-no-int-to-ptr,-bugprone-implicit-widening-of-multiplication-result,-performance-unnecessary-copy-initialization,-bugprone-suspicious-realloc-usage,'
|
||||
WarningsAsErrors: '*'
|
||||
HeaderFilterRegex: '.*/okular/.*'
|
||||
AnalyzeTemporaryDtors: false
|
||||
|
|
|
@ -30,28 +30,47 @@ include:
|
|||
|
||||
build_clazy_clang_tidy:
|
||||
stage: build
|
||||
image: debian:unstable
|
||||
image: invent-registry.kde.org/sysadmin/ci-images/suse-qt515:latest
|
||||
tags:
|
||||
- Linux
|
||||
interruptible: true
|
||||
before_script:
|
||||
- git clone https://invent.kde.org/sysadmin/ci-utilities.git --depth=1
|
||||
- git clone https://invent.kde.org/sysadmin/repo-metadata.git ci-utilities/repo-metadata/ --depth=1
|
||||
only:
|
||||
- merge_requests
|
||||
before_script:
|
||||
- echo 'deb-src http://deb.debian.org/debian unstable main' >> /etc/apt/sources.list
|
||||
- apt-get update
|
||||
- apt-get install --yes eatmydata
|
||||
- eatmydata apt-get build-dep --yes --no-install-recommends okular
|
||||
- eatmydata apt-get install --yes --no-install-recommends ninja-build clazy clang clang-tidy-14 libqt5x11extras5-dev libkf5crash-dev libkf5purpose-dev kirigami2-dev libegl-dev jq
|
||||
|
||||
variables:
|
||||
KDECI_CC_CACHE: /mnt/caches/suse-qt5.15/
|
||||
KDECI_CACHE_PATH: /mnt/artifacts/suse-qt5.15/
|
||||
KDECI_GITLAB_SERVER: https://invent.kde.org/
|
||||
KDECI_PACKAGE_PROJECT: teams/ci-artifacts/suse-qt5.15
|
||||
CLAZY_CHECKS: level0,level1,level2,no-ctor-missing-parent-argument,isempty-vs-count,qhash-with-char-pointer-key,raw-environment-function,qproperty-type-mismatch,no-no-module-include
|
||||
CXXFLAGS: -Werror -Wno-deprecated-declarations
|
||||
CC: clang
|
||||
CXX: clazy
|
||||
script:
|
||||
- srcdir=`pwd` && mkdir -p /tmp/okular_build && cd /tmp/okular_build && CC=clang CXX=clazy CXXFLAGS="-Werror -Wno-deprecated-declarations" cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja $srcdir && cat compile_commands.json | jq '[.[] | select(.file | contains("'"$srcdir"'"))]' > compile_commands.aux.json && cat compile_commands.aux.json | jq '[.[] | select(.file | contains("/synctex/")| not)]' > compile_commands.json && cp "$srcdir/.clang-tidy" .
|
||||
- CLAZY_IGNORE_DIRS="settings_core.[cpp|h]|settings.[cpp.h]|pdfsettings.h|gssettings.h|ui_selectcertificatedialog.h" CLAZY_CHECKS="level0,level1,level2,no-ctor-missing-parent-argument,isempty-vs-count,qhash-with-char-pointer-key,raw-environment-function,qproperty-type-mismatch" ninja
|
||||
- run-clang-tidy-14
|
||||
- git config --global --add safe.directory $CI_PROJECT_DIR
|
||||
- python3 -u ci-utilities/run-ci-build.py --project $CI_PROJECT_NAME --branch $CI_COMMIT_REF_NAME --platform Linux/Qt5/Shared --only-setup-environment
|
||||
# Default UI
|
||||
- mkdir -p /tmp/okular_build
|
||||
- cd /tmp/okular_build
|
||||
- cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -DCMAKE_INSTALL_PREFIX=$CI_PROJECT_DIR/_install -DFORCE_NOT_REQUIRED_DEPENDENCIES=KF5DocTools -DKF5DocTools_FOUND=false $CI_PROJECT_DIR
|
||||
- cat compile_commands.json | jq '[.[] | select(.file | contains("'"$CI_PROJECT_DIR"'"))]' > compile_commands.aux.json
|
||||
- cat compile_commands.aux.json | jq '[.[] | select(.file | contains("/synctex/")| not)]' > compile_commands.json
|
||||
- cp "$CI_PROJECT_DIR/.clang-tidy" .
|
||||
- CLAZY_IGNORE_DIRS="settings_core.[cpp|h]|settings.[cpp.h]|pdfsettings.h|gssettings.h|ui_selectcertificatedialog.h" ninja -k 0
|
||||
- run-clang-tidy
|
||||
- rm -rf *
|
||||
# Mobile UI
|
||||
- echo "Now compiling the mobile UI"
|
||||
- cd "$CI_PROJECT_DIR"
|
||||
- srcdir=`pwd` && mkdir -p /tmp/okular_build && cd /tmp/okular_build && CC=clang CXX=clazy CXXFLAGS="-Werror -Wno-deprecated-declarations" cmake -DOKULAR_UI=mobile -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja $srcdir && cat compile_commands.json | jq '[.[] | select(.file | contains("'"$srcdir"'"))]' > compile_commands.aux.json && cat compile_commands.aux.json | jq '[.[] | select(.file | contains("/synctex/")| not)]' > compile_commands.json && cp "$srcdir/.clang-tidy" .
|
||||
- CLAZY_IGNORE_DIRS="settings_mobile.[cpp|h]|settings.[cpp.h]|pdfsettings.h|gssettings.h" CLAZY_CHECKS="level0,level1,level2,no-ctor-missing-parent-argument,isempty-vs-count,qhash-with-char-pointer-key,raw-environment-function,qproperty-type-mismatch" ninja
|
||||
- run-clang-tidy-14
|
||||
- mkdir -p /tmp/okular_build
|
||||
- cd /tmp/okular_build
|
||||
- cmake -DOKULAR_UI=mobile -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -DCMAKE_INSTALL_PREFIX=$CI_PROJECT_DIR/_install -DFORCE_NOT_REQUIRED_DEPENDENCIES=KF5DocTools -DKF5DocTools_FOUND=false $CI_PROJECT_DIR
|
||||
- cat compile_commands.json | jq '[.[] | select(.file | contains("'"$CI_PROJECT_DIR"'"))]' > compile_commands.aux.json
|
||||
- cat compile_commands.aux.json | jq '[.[] | select(.file | contains("/synctex/")| not)]' > compile_commands.json
|
||||
- cp "$CI_PROJECT_DIR/.clang-tidy" .
|
||||
- CLAZY_IGNORE_DIRS="settings_mobile.[cpp|h]|settings.[cpp.h]|pdfsettings.h|gssettings.h" ninja -k 0
|
||||
- run-clang-tidy
|
||||
|
||||
clang_format:
|
||||
stage: build
|
||||
|
|
|
@ -397,6 +397,7 @@ void DocumentPrivate::cleanupPixmapMemory(qulonglong memoryToFree)
|
|||
}
|
||||
|
||||
m_allocatedPixmaps.splice(m_allocatedPixmaps.end(), pixmapsToKeep);
|
||||
Q_UNUSED(pagesFreed);
|
||||
// p--rintf("freeMemory A:[%d -%d = %d] \n", m_allocatedPixmaps.count() + pagesFreed, pagesFreed, m_allocatedPixmaps.count() );
|
||||
}
|
||||
|
||||
|
@ -2764,7 +2765,7 @@ void Document::closeDocument()
|
|||
// reset internal variables
|
||||
|
||||
d->m_viewportHistory.clear();
|
||||
d->m_viewportHistory.emplace_back(DocumentViewport());
|
||||
d->m_viewportHistory.emplace_back();
|
||||
d->m_viewportIterator = d->m_viewportHistory.begin();
|
||||
d->m_allocatedPixmapsTotalMemory = 0;
|
||||
d->m_allocatedTextPagesFifo.clear();
|
||||
|
|
|
@ -509,13 +509,11 @@ RegularAreaRect *TextPage::textArea(TextSelection *sel) const
|
|||
else {
|
||||
selection_two_start = true;
|
||||
int distance = scaleX + scaleY + 100;
|
||||
int count = 0;
|
||||
|
||||
for (; it != itEnd; ++it) {
|
||||
rect = (*it)->area;
|
||||
|
||||
if (rect.isBottomOrLevel(startC) && rect.isRight(startC)) {
|
||||
count++;
|
||||
QRect entRect = rect.geometry(scaleX, scaleY);
|
||||
int xdist, ydist;
|
||||
xdist = entRect.center().x() - startC.x * scaleX;
|
||||
|
@ -1035,7 +1033,6 @@ static WordsWithCharacters makeWordFromCharacters(const TextList &characters, in
|
|||
|
||||
TextList::ConstIterator it = characters.begin(), itEnd = characters.end(), tmpIt;
|
||||
int newLeft, newRight, newTop, newBottom;
|
||||
int index = 0;
|
||||
|
||||
for (; it != itEnd; it++) {
|
||||
QString textString = (*it)->text();
|
||||
|
@ -1102,8 +1099,6 @@ static WordsWithCharacters makeWordFromCharacters(const TextList &characters, in
|
|||
const NormalizedRect newRect(lineArea, pageWidth, pageHeight);
|
||||
TinyTextEntity *word = new TinyTextEntity(newString.normalized(QString::NormalizationForm_KC), newRect);
|
||||
wordsWithCharacters.append(WordWithCharacters(word, wordCharacters));
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
if (it == itEnd) {
|
||||
|
|
|
@ -77,7 +77,11 @@ void Converter::convertAgain()
|
|||
|
||||
QTextDocument *Converter::convertOpenFile()
|
||||
{
|
||||
rewind(m_markdownFile);
|
||||
int result = fseek(m_markdownFile, 0, SEEK_SET);
|
||||
if (result != 0) {
|
||||
Q_EMIT error(i18n("Failed to open the document"), -1);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#if defined(MKD_NOLINKS)
|
||||
// on discount 2 MKD_NOLINKS is a define
|
||||
|
|
|
@ -41,10 +41,12 @@ static QString popplerEnumToUserString(Poppler::CryptoSignBackend backend)
|
|||
|
||||
std::optional<Poppler::CryptoSignBackend> PDFSettingsWidget::settingStringToPopplerEnum(QStringView backend)
|
||||
{
|
||||
if (backend == QStringLiteral("NSS"))
|
||||
if (backend == QStringLiteral("NSS")) {
|
||||
return Poppler::CryptoSignBackend::NSS;
|
||||
if (backend == QStringLiteral("GPG"))
|
||||
}
|
||||
if (backend == QStringLiteral("GPG")) {
|
||||
return Poppler::CryptoSignBackend::GPG;
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
#endif
|
||||
|
@ -87,7 +89,7 @@ PDFSettingsWidget::PDFSettingsWidget(QWidget *parent)
|
|||
m_pdfsw.kcfg_SignatureBackend->setProperty("kcfg_property", QByteArray("currentData"));
|
||||
|
||||
m_pdfsw.kcfg_SignatureBackend->setCurrentIndex(selected);
|
||||
connect(m_pdfsw.kcfg_SignatureBackend, &QComboBox::currentTextChanged, [this](const QString &text) {
|
||||
connect(m_pdfsw.kcfg_SignatureBackend, &QComboBox::currentTextChanged, this, [this](const QString &text) {
|
||||
auto backendEnum = settingStringToPopplerEnum(text);
|
||||
if (!backendEnum) {
|
||||
return;
|
||||
|
|
|
@ -26,7 +26,7 @@ public:
|
|||
explicit PDFSettingsWidget(QWidget *parent = nullptr);
|
||||
bool event(QEvent *e) override;
|
||||
#if POPPLER_VERSION_MACRO >= QT_VERSION_CHECK(23, 06, 0)
|
||||
static std::optional<Poppler::CryptoSignBackend> settingStringToPopplerEnum(QStringView string);
|
||||
static std::optional<Poppler::CryptoSignBackend> settingStringToPopplerEnum(QStringView backend);
|
||||
static QString popplerEnumToSettingString(Poppler::CryptoSignBackend backend);
|
||||
#endif
|
||||
|
||||
|
|
|
@ -789,10 +789,10 @@ void XpsPage::processGlyph(QPainter *painter, XpsRenderNode &node)
|
|||
att = node.attributes.value(QStringLiteral("Indices")).toString();
|
||||
QList<qreal> advanceWidths;
|
||||
if (!att.isEmpty()) {
|
||||
QStringList indicesElements = att.split(QLatin1Char(';'));
|
||||
for (int i = 0; i < indicesElements.size(); ++i) {
|
||||
if (indicesElements.at(i).contains(QStringLiteral(","))) {
|
||||
QStringList parts = indicesElements.at(i).split(QLatin1Char(','));
|
||||
const QStringList indicesElements = att.split(QLatin1Char(';'));
|
||||
for (const QString &indicesElement : indicesElements) {
|
||||
if (indicesElements.contains(QStringLiteral(","))) {
|
||||
const QStringList parts = indicesElement.split(QLatin1Char(','));
|
||||
if (parts.size() == 2) {
|
||||
// regular advance case, no offsets
|
||||
advanceWidths.append(parts.at(1).toDouble() * fontSize / 100.0);
|
||||
|
@ -803,7 +803,7 @@ void XpsPage::processGlyph(QPainter *painter, XpsRenderNode &node)
|
|||
advanceWidths.append(AdvanceWidth + uOffset);
|
||||
} else {
|
||||
// has vertical offset, but don't know how to handle that yet
|
||||
qCWarning(OkularXpsDebug) << "Unhandled Indices element: " << indicesElements.at(i);
|
||||
qCWarning(OkularXpsDebug) << "Unhandled Indices element: " << indicesElement;
|
||||
advanceWidths.append(-1.0);
|
||||
}
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue