Changeset View
Changeset View
Standalone View
Standalone View
outputview/outputfilteringstrategies.h
Show All 21 Lines | |||||
22 | * @file This file contains Concrete strategies for filtering output | 22 | * @file This file contains Concrete strategies for filtering output | ||
23 | * in KDevelop output model. I.e. classes that inherit from ifilterstrategy. | 23 | * in KDevelop output model. I.e. classes that inherit from ifilterstrategy. | ||
24 | * New filtering strategies should be added here | 24 | * New filtering strategies should be added here | ||
25 | */ | 25 | */ | ||
26 | 26 | | |||
27 | 27 | | |||
28 | #include "ifilterstrategy.h" | 28 | #include "ifilterstrategy.h" | ||
29 | #include "outputformats.h" | 29 | #include "outputformats.h" | ||
30 | | ||||
31 | #include <util/path.h> | | |||
32 | | ||||
33 | #include <outputview/outputviewexport.h> | 30 | #include <outputview/outputviewexport.h> | ||
34 | 31 | | |||
35 | #define KDEVPLATFORMOUTPUTVIEW_TEST_EXPORT KDEVPLATFORMOUTPUTVIEW_EXPORT | | |||
36 | | ||||
37 | #include <QList> | 32 | #include <QList> | ||
38 | #include <QVector> | 33 | #include <QVector> | ||
39 | #include <QtCore/QMap> | 34 | #include <QtCore/QMap> | ||
40 | #include <QUrl> | 35 | #include <QUrl> | ||
41 | 36 | | |||
42 | namespace KDevelop | 37 | namespace KDevelop | ||
43 | { | 38 | { | ||
44 | 39 | | |||
40 | struct CompilerFilterStrategyPrivate; | ||||
41 | | ||||
45 | /** | 42 | /** | ||
46 | * This filter strategy is for not applying any filtering at all. Implementation of the | 43 | * This filter strategy is for not applying any filtering at all. Implementation of the | ||
47 | * interface methods are basically noops | 44 | * interface methods are basically noops | ||
48 | **/ | 45 | **/ | ||
49 | class KDEVPLATFORMOUTPUTVIEW_TEST_EXPORT NoFilterStrategy final : public IFilterStrategy | 46 | class KDEVPLATFORMOUTPUTVIEW_EXPORT NoFilterStrategy : public IFilterStrategy | ||
mwolff: now ots public api you must use the real export macro | |||||
50 | { | 47 | { | ||
51 | 48 | | |||
52 | public: | 49 | public: | ||
53 | NoFilterStrategy(); | 50 | NoFilterStrategy(); | ||
54 | 51 | | |||
55 | virtual FilteredItem errorInLine(const QString& line) override; | 52 | virtual FilteredItem errorInLine(const QString& line) override; | ||
56 | 53 | | |||
57 | virtual FilteredItem actionInLine(const QString& line) override; | 54 | virtual FilteredItem actionInLine(const QString& line) override; | ||
58 | 55 | | |||
59 | }; | 56 | }; | ||
60 | 57 | | |||
61 | /** | 58 | /** | ||
62 | * This filter stategy checks if a given line contains output | 59 | * This filter stategy checks if a given line contains output | ||
63 | * that is defined as an error (or an action) from a compiler. | 60 | * that is defined as an error (or an action) from a compiler. | ||
64 | **/ | 61 | **/ | ||
65 | class KDEVPLATFORMOUTPUTVIEW_TEST_EXPORT CompilerFilterStrategy final : public IFilterStrategy | 62 | class KDEVPLATFORMOUTPUTVIEW_EXPORT CompilerFilterStrategy : public IFilterStrategy | ||
66 | { | 63 | { | ||
67 | 64 | | |||
68 | public: | 65 | public: | ||
69 | CompilerFilterStrategy(const QUrl& buildDir); | 66 | CompilerFilterStrategy(const QUrl& buildDir); | ||
67 | virtual ~CompilerFilterStrategy(); | ||||
70 | 68 | | |||
71 | virtual FilteredItem errorInLine(const QString& line) override; | 69 | virtual FilteredItem errorInLine(const QString& line) override; | ||
72 | 70 | | |||
73 | virtual FilteredItem actionInLine(const QString& line) override; | 71 | virtual FilteredItem actionInLine(const QString& line) override; | ||
74 | 72 | | |||
75 | QVector<QString> getCurrentDirs(); | 73 | QVector<QString> getCurrentDirs(); | ||
76 | 74 | | |||
77 | private: | 75 | private: | ||
78 | KDevelop::Path pathForFile( const QString& ) const; | 76 | CompilerFilterStrategyPrivate* const d; | ||
mwolff: please do | |||||
79 | bool isMultiLineCase(ErrorFormat curErrFilter) const; | | |||
80 | void putDirAtEnd(const KDevelop::Path& pathToInsert); | | |||
81 | | ||||
82 | QVector<KDevelop::Path> m_currentDirs; | | |||
83 | KDevelop::Path m_buildDir; | | |||
84 | | ||||
85 | using PositionMap = QHash<KDevelop::Path, int>; | | |||
86 | PositionMap m_positionInCurrentDirs; | | |||
87 | }; | 77 | }; | ||
88 | 78 | | |||
89 | /** | 79 | /** | ||
90 | * This filter stategy filters out errors (no actions) from Python and PHP scripts. | 80 | * This filter stategy filters out errors (no actions) from Python and PHP scripts. | ||
91 | **/ | 81 | **/ | ||
92 | class KDEVPLATFORMOUTPUTVIEW_TEST_EXPORT ScriptErrorFilterStrategy final : public IFilterStrategy | 82 | class KDEVPLATFORMOUTPUTVIEW_EXPORT ScriptErrorFilterStrategy : public IFilterStrategy | ||
93 | { | 83 | { | ||
94 | 84 | | |||
95 | public: | 85 | public: | ||
96 | ScriptErrorFilterStrategy(); | 86 | ScriptErrorFilterStrategy(); | ||
97 | 87 | | |||
98 | virtual FilteredItem errorInLine(const QString& line) override; | 88 | virtual FilteredItem errorInLine(const QString& line) override; | ||
99 | 89 | | |||
100 | virtual FilteredItem actionInLine(const QString& line) override; | 90 | virtual FilteredItem actionInLine(const QString& line) override; | ||
101 | 91 | | |||
102 | }; | 92 | }; | ||
103 | 93 | | |||
104 | /** | 94 | /** | ||
105 | * This filter strategy filters out errors (no actions) from runtime debug output of native applications | 95 | * This filter strategy filters out errors (no actions) from runtime debug output of native applications | ||
106 | * | 96 | * | ||
107 | * This is especially useful for runtime output of Qt applications, for example lines such as: | 97 | * This is especially useful for runtime output of Qt applications, for example lines such as: | ||
108 | * "ASSERT: "errors().isEmpty()" in file /tmp/foo/bar.cpp", line 49" | 98 | * "ASSERT: "errors().isEmpty()" in file /tmp/foo/bar.cpp", line 49" | ||
109 | */ | 99 | */ | ||
110 | class KDEVPLATFORMOUTPUTVIEW_TEST_EXPORT NativeAppErrorFilterStrategy final : public IFilterStrategy | 100 | class KDEVPLATFORMOUTPUTVIEW_EXPORT NativeAppErrorFilterStrategy : public IFilterStrategy | ||
111 | { | 101 | { | ||
112 | public: | 102 | public: | ||
113 | NativeAppErrorFilterStrategy(); | 103 | NativeAppErrorFilterStrategy(); | ||
114 | 104 | | |||
115 | virtual FilteredItem errorInLine(const QString& line) override; | 105 | virtual FilteredItem errorInLine(const QString& line) override; | ||
116 | virtual FilteredItem actionInLine(const QString& line) override; | 106 | virtual FilteredItem actionInLine(const QString& line) override; | ||
117 | }; | 107 | }; | ||
118 | 108 | | |||
119 | /** | 109 | /** | ||
120 | * This filter stategy filters out errors (no actions) from Static code analysis tools (Cppcheck,) | 110 | * This filter stategy filters out errors (no actions) from Static code analysis tools (Cppcheck,) | ||
121 | **/ | 111 | **/ | ||
122 | class KDEVPLATFORMOUTPUTVIEW_TEST_EXPORT StaticAnalysisFilterStrategy final : public IFilterStrategy | 112 | class KDEVPLATFORMOUTPUTVIEW_EXPORT StaticAnalysisFilterStrategy : public IFilterStrategy | ||
123 | { | 113 | { | ||
124 | 114 | | |||
125 | public: | 115 | public: | ||
126 | StaticAnalysisFilterStrategy(); | 116 | StaticAnalysisFilterStrategy(); | ||
127 | 117 | | |||
128 | virtual FilteredItem errorInLine(const QString& line) override; | 118 | virtual FilteredItem errorInLine(const QString& line) override; | ||
129 | 119 | | |||
130 | virtual FilteredItem actionInLine(const QString& line) override; | 120 | virtual FilteredItem actionInLine(const QString& line) override; | ||
131 | 121 | | |||
132 | }; | 122 | }; | ||
133 | 123 | | |||
134 | } // namespace KDevelop | 124 | } // namespace KDevelop | ||
135 | #endif // KDEVPLATFORM_OUTPUTFILTERINGSTRATEGIES_H | 125 | #endif // KDEVPLATFORM_OUTPUTFILTERINGSTRATEGIES_H | ||
136 | 126 | |
now ots public api you must use the real export macro