File indexing completed on 2024-05-05 04:39:30
0001 /* 0002 SPDX-FileCopyrightText: 2006-2008 Hamish Rodda <rodda@kde.org> 0003 SPDX-FileCopyrightText: 2002 Harald Fernengel <harry@kdevelop.org> 0004 SPDX-FileCopyrightText: 2011 Mathieu Lornac <mathieu.lornac@gmail.com> 0005 SPDX-FileCopyrightText: 2011 Damien Coppel <damien.coppel@gmail.com> 0006 SPDX-FileCopyrightText: 2011 Lionel Duc <lionel.data@gmail.com> 0007 SPDX-FileCopyrightText: 2013 Christoph Thielecke <crissi99@gmx.de> 0008 SPDX-FileCopyrightText: 2016 Anton Anikin <anton.anikin@htower.ru> 0009 0010 SPDX-License-Identifier: GPL-2.0-or-later 0011 */ 0012 0013 #ifndef CPPCHECK_JOB_H 0014 #define CPPCHECK_JOB_H 0015 0016 #include "parameters.h" 0017 0018 #include <interfaces/iproblem.h> 0019 #include <outputview/outputexecutejob.h> 0020 0021 class QElapsedTimer; 0022 0023 namespace cppcheck 0024 { 0025 0026 class CppcheckParser; 0027 0028 class Job : public KDevelop::OutputExecuteJob 0029 { 0030 Q_OBJECT 0031 0032 public: 0033 explicit Job(const Parameters& params, QObject* parent = nullptr); 0034 ~Job() override; 0035 0036 void start() override; 0037 0038 Q_SIGNALS: 0039 void problemsDetected(const QVector<KDevelop::IProblem::Ptr>& problems); 0040 0041 protected Q_SLOTS: 0042 void postProcessStdout(const QStringList& lines) override; 0043 void postProcessStderr(const QStringList& lines) override; 0044 0045 void childProcessExited(int exitCode, QProcess::ExitStatus exitStatus) override; 0046 void childProcessError(QProcess::ProcessError processError) override; 0047 0048 protected: 0049 void emitProblems(); 0050 0051 QScopedPointer<QElapsedTimer> m_timer; 0052 0053 QScopedPointer<CppcheckParser> m_parser; 0054 QVector<KDevelop::IProblem::Ptr> m_problems; 0055 0056 QStringList m_standardOutput; 0057 QStringList m_xmlOutput; 0058 0059 bool m_showXmlOutput; 0060 0061 KDevelop::Path m_projectRootPath; 0062 }; 0063 0064 } 0065 0066 #endif