diff --git a/addons/project/kateprojectcodeanalysistool.h b/addons/project/kateprojectcodeanalysistool.h --- a/addons/project/kateprojectcodeanalysistool.h +++ b/addons/project/kateprojectcodeanalysistool.h @@ -52,7 +52,7 @@ /** * @return tool descriptive name */ - virtual QString name() = 0; + virtual QString name() const = 0; /** * @return tool short description @@ -66,36 +66,37 @@ * NOTE that this is used directly as part of a regular expression. * If more flexibility is required this method probably will change */ - virtual QString fileExtensions() = 0; + virtual QString fileExtensions() const = 0; /** * filter relevant files * @param files set of files in project * @return relevant files that can be analyzed */ - virtual QStringList filter(const QStringList &files) = 0; + virtual QStringList filter(const QStringList &files) const = 0; /** * @return tool path */ - virtual QString path() = 0; + virtual QString path() const = 0; /** * @return arguments required for the tool + * NOTE that this method is not const because here setActualFilesCount might be called */ virtual QStringList arguments() = 0; /** * @return warning message when the tool is not installed */ - virtual QString notInstalledMessage() = 0; + virtual QString notInstalledMessage() const = 0; /** * parse output line * @param line * @return file, line, severity, message */ - virtual QStringList parseLine(const QString &line) = 0; + virtual QStringList parseLine(const QString &line) const = 0; /** * Tells the tool runner if the returned process exit code @@ -107,18 +108,21 @@ * e.g. if the processing itself was successful but not all files * had no linter errors. */ - virtual bool isSuccessfulExitCode(int exitCode); + virtual bool isSuccessfulExitCode(int exitCode) const; /** * @return messages passed to the tool through stdin + * This is used when the files are not passed as arguments to the tool. + * + * NOTE that this method is not const because here setActualFilesCount might be called */ virtual QString stdinMessages() = 0; /** * @returns the number of files to be processed after the filter * has been applied */ - int getActualFilesCount(); + int getActualFilesCount() const; /** * To be called by derived classes diff --git a/addons/project/kateprojectcodeanalysistool.cpp b/addons/project/kateprojectcodeanalysistool.cpp --- a/addons/project/kateprojectcodeanalysistool.cpp +++ b/addons/project/kateprojectcodeanalysistool.cpp @@ -35,12 +35,12 @@ m_project = project; } -bool KateProjectCodeAnalysisTool::isSuccessfulExitCode(int exitCode) +bool KateProjectCodeAnalysisTool::isSuccessfulExitCode(int exitCode) const { return exitCode == 0; } -int KateProjectCodeAnalysisTool::getActualFilesCount() +int KateProjectCodeAnalysisTool::getActualFilesCount() const { return m_filesCount; } 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 @@ -33,21 +33,21 @@ virtual ~KateProjectCodeAnalysisToolCppcheck() override; - virtual QString name() override; + virtual QString name() const override; virtual QString description() const override; - virtual QString fileExtensions() override; + virtual QString fileExtensions() const override; - virtual QStringList filter(const QStringList &files) override; + virtual QStringList filter(const QStringList &files) const override; - virtual QString path() override; + virtual QString path() const override; virtual QStringList arguments() override; - virtual QString notInstalledMessage() override; + virtual QString notInstalledMessage() const override; - virtual QStringList parseLine(const QString &line) override; + virtual QStringList parseLine(const QString &line) const override; virtual QString stdinMessages() 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 @@ -34,7 +34,7 @@ } -QString KateProjectCodeAnalysisToolCppcheck::name() +QString KateProjectCodeAnalysisToolCppcheck::name() const { return i18n("Cppcheck (C++)"); } @@ -44,20 +44,20 @@ return i18n("Cppcheck is a static analysis tool for C/C++ code"); } -QString KateProjectCodeAnalysisToolCppcheck::fileExtensions() +QString KateProjectCodeAnalysisToolCppcheck::fileExtensions() const { return QStringLiteral("cpp|cxx|cc|c++|c|tpp|txx"); } -QStringList KateProjectCodeAnalysisToolCppcheck::filter(const QStringList &files) +QStringList KateProjectCodeAnalysisToolCppcheck::filter(const QStringList &files) const { // c++ files return files.filter(QRegularExpression(QStringLiteral("\\.(") + fileExtensions().replace(QStringLiteral("+"), QStringLiteral("\\+")) + QStringLiteral(")$"))); } -QString KateProjectCodeAnalysisToolCppcheck::path() +QString KateProjectCodeAnalysisToolCppcheck::path() const { return QStringLiteral("cppcheck"); } @@ -75,12 +75,12 @@ return _args; } -QString KateProjectCodeAnalysisToolCppcheck::notInstalledMessage() +QString KateProjectCodeAnalysisToolCppcheck::notInstalledMessage() const { return i18n("Please install 'cppcheck'."); } -QStringList KateProjectCodeAnalysisToolCppcheck::parseLine(const QString &line) +QStringList KateProjectCodeAnalysisToolCppcheck::parseLine(const QString &line) const { return line.split(QRegExp(QStringLiteral("////")), QString::SkipEmptyParts); } 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 @@ -33,21 +33,21 @@ virtual ~KateProjectCodeAnalysisToolFlake8() override; - virtual QString name() override; + virtual QString name() const override; virtual QString description() const override; - virtual QString fileExtensions() override; + virtual QString fileExtensions() const override; - virtual QStringList filter(const QStringList &files) override; + virtual QStringList filter(const QStringList &files) const override; - virtual QString path() override; + virtual QString path() const override; virtual QStringList arguments() override; - virtual QString notInstalledMessage() override; + virtual QString notInstalledMessage() const override; - virtual QStringList parseLine(const QString &line) override; + virtual QStringList parseLine(const QString &line) const override; virtual QString stdinMessages() 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 @@ -34,7 +34,7 @@ } -QString KateProjectCodeAnalysisToolFlake8::name() +QString KateProjectCodeAnalysisToolFlake8::name() const { return i18n("Flake8 (Python)"); } @@ -44,18 +44,18 @@ return i18n("Flake8: Your Tool For Style Guide Enforcement for Python"); } -QString KateProjectCodeAnalysisToolFlake8::fileExtensions() +QString KateProjectCodeAnalysisToolFlake8::fileExtensions() const { return QStringLiteral("py"); } -QStringList KateProjectCodeAnalysisToolFlake8::filter(const QStringList &files) +QStringList KateProjectCodeAnalysisToolFlake8::filter(const QStringList &files) const { // for now we expect files with extension return files.filter(QRegularExpression(QStringLiteral("\\.(") + fileExtensions() + QStringLiteral(")$"))); } -QString KateProjectCodeAnalysisToolFlake8::path() +QString KateProjectCodeAnalysisToolFlake8::path() const { /* * for now, only the executable in the path can be called, @@ -85,12 +85,12 @@ return _args; } -QString KateProjectCodeAnalysisToolFlake8::notInstalledMessage() +QString KateProjectCodeAnalysisToolFlake8::notInstalledMessage() const { return i18n("Please install 'flake8'."); } -QStringList KateProjectCodeAnalysisToolFlake8::parseLine(const QString &line) +QStringList KateProjectCodeAnalysisToolFlake8::parseLine(const QString &line) const { return line.split(QRegExp(QStringLiteral("////")), QString::SkipEmptyParts); } diff --git a/addons/project/tools/kateprojectcodeanalysistoolshellcheck.h b/addons/project/tools/kateprojectcodeanalysistoolshellcheck.h --- a/addons/project/tools/kateprojectcodeanalysistoolshellcheck.h +++ b/addons/project/tools/kateprojectcodeanalysistoolshellcheck.h @@ -32,23 +32,23 @@ virtual ~KateProjectCodeAnalysisToolShellcheck() override; - virtual QString name() override; + virtual QString name() const override; virtual QString description() const override; - virtual QString fileExtensions() override; + virtual QString fileExtensions() const override; - virtual QStringList filter(const QStringList &files) override; + virtual QStringList filter(const QStringList &files) const override; - virtual QString path() override; + virtual QString path() const override; virtual QStringList arguments() override; - virtual QString notInstalledMessage() override; + virtual QString notInstalledMessage() const override; - virtual QStringList parseLine(const QString &line) override; + virtual QStringList parseLine(const QString &line) const override; - virtual bool isSuccessfulExitCode(int exitCode) override; + virtual bool isSuccessfulExitCode(int exitCode) const override; virtual QString stdinMessages() override; }; diff --git a/addons/project/tools/kateprojectcodeanalysistoolshellcheck.cpp b/addons/project/tools/kateprojectcodeanalysistoolshellcheck.cpp --- a/addons/project/tools/kateprojectcodeanalysistoolshellcheck.cpp +++ b/addons/project/tools/kateprojectcodeanalysistoolshellcheck.cpp @@ -33,7 +33,7 @@ { } -QString KateProjectCodeAnalysisToolShellcheck::name() +QString KateProjectCodeAnalysisToolShellcheck::name() const { return i18n("ShellCheck (sh/bash)"); } @@ -43,19 +43,19 @@ return i18n("ShellCheck is a static analysis and linting tool for sh/bash scripts"); } -QString KateProjectCodeAnalysisToolShellcheck::fileExtensions() +QString KateProjectCodeAnalysisToolShellcheck::fileExtensions() const { // TODO: How to also handle files with no file extension? return QStringLiteral("sh|bash"); } -QStringList KateProjectCodeAnalysisToolShellcheck::filter(const QStringList &files) +QStringList KateProjectCodeAnalysisToolShellcheck::filter(const QStringList &files) const { // for now we expect files with extension return files.filter(QRegularExpression(QStringLiteral("\\.(") + fileExtensions() + QStringLiteral(")$"))); } -QString KateProjectCodeAnalysisToolShellcheck::path() +QString KateProjectCodeAnalysisToolShellcheck::path() const { return QStringLiteral("shellcheck"); } @@ -82,12 +82,12 @@ return _args; } -QString KateProjectCodeAnalysisToolShellcheck::notInstalledMessage() +QString KateProjectCodeAnalysisToolShellcheck::notInstalledMessage() const { return i18n("Please install ShellCheck (see https://www.shellcheck.net)."); } -QStringList KateProjectCodeAnalysisToolShellcheck::parseLine(const QString &line) +QStringList KateProjectCodeAnalysisToolShellcheck::parseLine(const QString &line) const { // Example: // IN: @@ -108,7 +108,7 @@ return outList; } -bool KateProjectCodeAnalysisToolShellcheck::isSuccessfulExitCode(int exitCode) +bool KateProjectCodeAnalysisToolShellcheck::isSuccessfulExitCode(int exitCode) const { // "0: All files successfully scanned with no issues." // "1: All files successfully scanned with some issues."