File indexing completed on 2024-05-05 04:38:04
0001 /* 0002 SPDX-FileCopyrightText: 2012 Morten Danielsen Volden <mvolden2@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KDEVPLATFORM_OUTPUTFILTERINGSTRATEGIES_H 0008 #define KDEVPLATFORM_OUTPUTFILTERINGSTRATEGIES_H 0009 0010 /** 0011 * @file outputfilteringstrategies.h 0012 * 0013 * This file contains Concrete strategies for filtering output 0014 * in KDevelop output model. I.e. classes that inherit from ifilterstrategy. 0015 * New filtering strategies should be added here 0016 */ 0017 0018 0019 #include "ifilterstrategy.h" 0020 #include <outputview/outputviewexport.h> 0021 0022 #include <QVector> 0023 #include <QUrl> 0024 #include <QScopedPointer> 0025 0026 namespace KDevelop 0027 { 0028 class CompilerFilterStrategyPrivate; 0029 0030 /** 0031 * This filter strategy is for not applying any filtering at all. Implementation of the 0032 * interface methods are basically noops 0033 **/ 0034 class KDEVPLATFORMOUTPUTVIEW_EXPORT NoFilterStrategy : public IFilterStrategy 0035 { 0036 0037 public: 0038 NoFilterStrategy(); 0039 0040 FilteredItem errorInLine(const QString& line) override; 0041 0042 FilteredItem actionInLine(const QString& line) override; 0043 0044 }; 0045 0046 /** 0047 * This filter strategy checks if a given line contains output 0048 * that is defined as an error (or an action) from a compiler. 0049 **/ 0050 class KDEVPLATFORMOUTPUTVIEW_EXPORT CompilerFilterStrategy : public IFilterStrategy 0051 { 0052 0053 public: 0054 explicit CompilerFilterStrategy(const QUrl& buildDir); 0055 ~CompilerFilterStrategy() override; 0056 0057 FilteredItem errorInLine(const QString& line) override; 0058 0059 FilteredItem actionInLine(const QString& line) override; 0060 0061 QVector<QString> currentDirs() const; 0062 0063 private: 0064 const QScopedPointer<class CompilerFilterStrategyPrivate> d_ptr; 0065 Q_DECLARE_PRIVATE(CompilerFilterStrategy) 0066 }; 0067 0068 /** 0069 * This filter strategy filters out errors (no actions) from Python and PHP scripts. 0070 **/ 0071 class KDEVPLATFORMOUTPUTVIEW_EXPORT ScriptErrorFilterStrategy : public IFilterStrategy 0072 { 0073 0074 public: 0075 ScriptErrorFilterStrategy(); 0076 0077 FilteredItem errorInLine(const QString& line) override; 0078 0079 FilteredItem actionInLine(const QString& line) override; 0080 0081 }; 0082 0083 /** 0084 * This filter strategy filters out errors (no actions) from runtime debug output of native applications 0085 * 0086 * This is especially useful for runtime output of Qt applications, for example lines such as: 0087 * "ASSERT: "errors().isEmpty()" in file /tmp/foo/bar.cpp", line 49" 0088 */ 0089 class KDEVPLATFORMOUTPUTVIEW_EXPORT NativeAppErrorFilterStrategy : public IFilterStrategy 0090 { 0091 public: 0092 NativeAppErrorFilterStrategy(); 0093 0094 FilteredItem errorInLine(const QString& line) override; 0095 FilteredItem actionInLine(const QString& line) override; 0096 }; 0097 0098 /** 0099 * This filter strategy filters out errors (no actions) from Static code analysis tools (Cppcheck,) 0100 **/ 0101 class KDEVPLATFORMOUTPUTVIEW_EXPORT StaticAnalysisFilterStrategy : public IFilterStrategy 0102 { 0103 0104 public: 0105 StaticAnalysisFilterStrategy(); 0106 0107 FilteredItem errorInLine(const QString& line) override; 0108 0109 FilteredItem actionInLine(const QString& line) override; 0110 0111 }; 0112 0113 } // namespace KDevelop 0114 #endif // KDEVPLATFORM_OUTPUTFILTERINGSTRATEGIES_H 0115