Files
qt-migration-copilot-demo/qt6-after/qt6-migrated-benchmark/MainWindow.cpp
T
torstenandCopilot 8ef6529c0c
qt-migration-copilot-demo/pipeline/pr-main There was a failure building this commit
qt-migration-copilot-demo/pipeline/head There was a failure building this commit
feat: Add LCOV coverage support for Jenkins CI
- Add ENABLE_COVERAGE CMake option with gcov flags
- Create collect-coverage.sh script for LCOV workflow
- Add Qt6 test files with QTest framework
- Update Jenkinsfile with Coverage stage (main/master/coverage.*)
- Update CI Docker image with lcov and genhtml packages
- Add .gitignore entries for coverage artifacts
- Add COVERAGE.md documentation

Coverage workflow:
1. Configure with -DENABLE_COVERAGE=ON
2. Build and run tests to generate .gcda/.gcno files
3. Collect coverage with lcov
4. Filter out Qt/system libraries
5. Generate HTML report and lcov.info for Jenkins

Jenkins publishes coverage/lcov.info using Coverage Plugin.
Coverage stage only runs on protected branches.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 7783c7698334
2026-10-22 17:17:39 +02:00

61 lines
1.5 KiB
C++

#include "MainWindow.h"
#include "ui_MainWindow.h"
#include <QApplication>
#include <QScreen>
#include <QPixmap>
#include <QString>
#include <QRect>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, m_pattern(QRegularExpression(R"(^[A-Za-z]+\d+$)"))
{
ui->setupUi(this);
setWindowTitle(u"Qt6 Legacy Migration Benchmark"_s);
ui->label->setText(u"Bitte Text wie Test123 eingeben."_s);
ui->iconLabel->setPixmap(QPixmap(u":/icons/app.png"_s).scaled(48, 48));
connect(ui->validateButton, &QPushButton::clicked, this, &MainWindow::onValidateClicked);
connect(ui->screenButton, &QPushButton::clicked, this, &MainWindow::onScreenInfoClicked);
}
MainWindow::~MainWindow()
{
delete ui;
}
bool MainWindow::validateInput(const QString &text) const
{
return m_pattern.match(text).hasMatch();
}
QString MainWindow::getScreenInfo() const
{
const QScreen *screen = QApplication::primaryScreen();
if (!screen) {
return u"Screen: unavailable"_s;
}
const QRect geometry = screen->geometry();
return u"Screen: %1x%2"_s.arg(geometry.width()).arg(geometry.height());
}
void MainWindow::onValidateClicked()
{
const QString text = ui->lineEdit->text();
if (validateInput(text)) {
ui->resultLabel->setText(u"Match"_s);
} else {
ui->resultLabel->setText(u"No match"_s);
}
}
void MainWindow::onScreenInfoClicked()
{
const QString info = getScreenInfo();
ui->resultLabel->setText(info);
}