diff --git a/addons/project/kateprojectcodeanalysistool.h b/addons/project/kateprojectcodeanalysistool.h --- a/addons/project/kateprojectcodeanalysistool.h +++ b/addons/project/kateprojectcodeanalysistool.h @@ -54,6 +54,13 @@ */ virtual QString name() = 0; + /** + * @returns a string containing the file extensions this + * tool should be run, separated by '|', + * e.g. "cpp|cxx" + */ + virtual QString fileExtensions() = 0; + /** * filter relevant files * @param files set of files in project diff --git a/addons/project/kateprojectinfoviewcodeanalysis.h b/addons/project/kateprojectinfoviewcodeanalysis.h --- a/addons/project/kateprojectinfoviewcodeanalysis.h +++ b/addons/project/kateprojectinfoviewcodeanalysis.h @@ -23,10 +23,11 @@ #include "kateproject.h" -#include +#include +#include #include +#include #include -#include class KateProjectPluginView; class KateProjectCodeAnalysisTool; @@ -62,6 +63,8 @@ } private Q_SLOTS: + void slotToolSelectionChanged(int); + /** * Called if start/stop button is clicked. */ @@ -125,6 +128,8 @@ QComboBox *m_toolSelector; + QLabel *m_toolInfoLabel; + }; #endif diff --git a/addons/project/kateprojectinfoviewcodeanalysis.cpp b/addons/project/kateprojectinfoviewcodeanalysis.cpp --- a/addons/project/kateprojectinfoviewcodeanalysis.cpp +++ b/addons/project/kateprojectinfoviewcodeanalysis.cpp @@ -23,9 +23,9 @@ #include "kateprojectcodeanalysistool.h" #include "tools/kateprojectcodeanalysisselector.h" -#include -#include #include +#include +#include #include #include @@ -41,6 +41,7 @@ , m_analyzer(nullptr) , m_analysisTool(nullptr) , m_toolSelector(new QComboBox()) + , m_toolInfoLabel(new QLabel(this)) { /** * default style @@ -63,22 +64,28 @@ m_treeView->sortByColumn(2, Qt::AscendingOrder); /** - * attach model to code analysis selector + * Connect info label callback + * and attach model to code analysis selector */ + connect(m_toolSelector, static_cast(&QComboBox::currentIndexChanged), + this, &KateProjectInfoViewCodeAnalysis::slotToolSelectionChanged); m_toolSelector->setModel(KateProjectCodeAnalysisSelector::model(this)); /** * layout widget */ QVBoxLayout *layout = new QVBoxLayout; layout->setSpacing(0); - layout->addWidget(m_treeView); + // top: selector and buttons... QHBoxLayout *hlayout = new QHBoxLayout; layout->addLayout(hlayout); hlayout->setSpacing(0); - hlayout->addStretch(); hlayout->addWidget(m_toolSelector); hlayout->addWidget(m_startStopAnalysis); + hlayout->addWidget(m_toolInfoLabel); + hlayout->addStretch(); + // below: result list... + layout->addWidget(m_treeView); setLayout(layout); /** @@ -92,6 +99,13 @@ { } +void KateProjectInfoViewCodeAnalysis::slotToolSelectionChanged(int) +{ + m_analysisTool = m_toolSelector->currentData(Qt::UserRole + 1).value(); + m_toolInfoLabel->setText(i18n(" The tool will be run on project files with these endings: %1.", + m_analysisTool->fileExtensions())); +} + void KateProjectInfoViewCodeAnalysis::slotStartStopClicked() { /** @@ -128,7 +142,7 @@ m_messageWidget->setMessageType(KMessageWidget::Warning); m_messageWidget->setWordWrap(false); m_messageWidget->setText(m_analysisTool->notInstalledMessage()); - static_cast(layout())->insertWidget(0, m_messageWidget); + static_cast(layout())->addWidget(m_messageWidget); m_messageWidget->animatedShow(); return; } @@ -223,6 +237,6 @@ m_messageWidget->setMessageType(KMessageWidget::Warning); m_messageWidget->setText(i18n("Analysis failed!")); } - static_cast(layout ())->insertWidget(0, m_messageWidget); + static_cast(layout ())->addWidget(m_messageWidget); m_messageWidget->animatedShow (); } diff --git a/addons/project/tools/kateprojectcodeanalysistoolcppcheck.h b/addons/project/tools/kateprojectcodeanalysistoolcppcheck.h --- a/addons/project/tools/kateprojectcodeanalysistoolcppcheck.h +++ b/addons/project/tools/kateprojectcodeanalysistoolcppcheck.h @@ -35,6 +35,8 @@ virtual QString name() override; + virtual QString fileExtensions() override; + virtual QStringList filter(const QStringList &files) override; virtual QString path() override; diff --git a/addons/project/tools/kateprojectcodeanalysistoolcppcheck.cpp b/addons/project/tools/kateprojectcodeanalysistoolcppcheck.cpp --- a/addons/project/tools/kateprojectcodeanalysistoolcppcheck.cpp +++ b/addons/project/tools/kateprojectcodeanalysistoolcppcheck.cpp @@ -39,10 +39,17 @@ return i18n("cppcheck"); } +QString KateProjectCodeAnalysisToolCppcheck::fileExtensions() +{ + return QStringLiteral("cpp|cxx|cc|c++|c|tpp|txx"); +} + QStringList KateProjectCodeAnalysisToolCppcheck::filter(const QStringList &files) { // c++ files - return files.filter(QRegularExpression(QStringLiteral("\\.(cpp|cxx|cc|c\\+\\+|c|tpp|txx)$"))); + return files.filter(QRegularExpression(QStringLiteral("\\.(") + + fileExtensions().replace(QStringLiteral("+"), QStringLiteral("\\+")) + + QStringLiteral(")$"))); } QString KateProjectCodeAnalysisToolCppcheck::path() diff --git a/addons/project/tools/kateprojectcodeanalysistoolflake8.h b/addons/project/tools/kateprojectcodeanalysistoolflake8.h --- a/addons/project/tools/kateprojectcodeanalysistoolflake8.h +++ b/addons/project/tools/kateprojectcodeanalysistoolflake8.h @@ -35,6 +35,8 @@ virtual QString name() override; + virtual QString fileExtensions() override; + virtual QStringList filter(const QStringList &files) override; virtual QString path() override; diff --git a/addons/project/tools/kateprojectcodeanalysistoolflake8.cpp b/addons/project/tools/kateprojectcodeanalysistoolflake8.cpp --- a/addons/project/tools/kateprojectcodeanalysistoolflake8.cpp +++ b/addons/project/tools/kateprojectcodeanalysistoolflake8.cpp @@ -39,10 +39,15 @@ return i18n("flake8"); } +QString KateProjectCodeAnalysisToolFlake8::fileExtensions() +{ + return QStringLiteral("py"); +} + QStringList KateProjectCodeAnalysisToolFlake8::filter(const QStringList &files) { // for now we expect files with extension - return files.filter(QRegularExpression(QStringLiteral("\\.py$"))); + return files.filter(QRegularExpression(QStringLiteral("\\.(") + fileExtensions() + QStringLiteral(")$"))); } QString KateProjectCodeAnalysisToolFlake8::path()