annotate extern/vera/src/plugins/Reports.cpp @ 680:900ca2f95838

Irccd: do not allow multiple server with same name
author David Demelier <markand@malikania.fr>
date Thu, 12 Apr 2018 20:45:02 +0200
parents a7c0eb100760
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
548
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 //
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 // Copyright (C) 2006-2007 Maciej Sobczak
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 // Distributed under the Boost Software License, Version 1.0.
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 // (See accompanying file LICENSE_1_0.txt or copy at
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 // http://www.boost.org/LICENSE_1_0.txt)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 //
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
7
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 #include "Reports.h"
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #include "Rules.h"
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 #include "Exclusions.h"
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 #include <sstream>
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 #include <map>
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 #include <utility>
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 #include <stdexcept>
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 #include <boost/algorithm/string/replace.hpp>
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
16
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
17
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 namespace // unnamed
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 // for a single report
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 typedef std::pair<Vera::Plugins::Rules::RuleName, Vera::Plugins::Reports::Message> SingleReport;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 // for a single file (line number -> single report)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 typedef std::multimap<int, SingleReport> FileMessagesCollection;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 // for all reports
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 typedef std::map<Vera::Plugins::Reports::FileName, FileMessagesCollection> MessagesCollection;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 MessagesCollection messages_;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 bool showRules_;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 bool vcFormat_;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 bool xmlReport_;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 std::string prefix_;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 } // unnamed namespace
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 namespace Vera
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 namespace Plugins
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 void Reports::setShowRules(bool show)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 showRules_ = show;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 void Reports::setXMLReport(bool xmlReport)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 xmlReport_ = xmlReport;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 void Reports::setVCFormat(bool vc)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 vcFormat_ = vc;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 void Reports::setPrefix(std::string prefix)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 prefix_ = prefix;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 int Reports::count()
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 return messages_.size();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 void Reports::add(const FileName & name, int lineNumber, const Message & msg)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 if (lineNumber <= 0)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 std::ostringstream ss;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 ss << "Line number out of range: " << lineNumber;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 throw std::out_of_range(ss.str());
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 const Rules::RuleName currentRule = Rules::getCurrentRule();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 if (Exclusions::isExcluded(name, lineNumber, currentRule, msg) == false)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 messages_[name].insert(make_pair(lineNumber, make_pair(currentRule, msg)));
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 void Reports::internal(const FileName & name, int lineNumber, const Message & msg)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 const Rules::RuleName currentRule = "vera++ internal";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 messages_[name].insert(make_pair(lineNumber, make_pair(currentRule, msg)));
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 void Reports::dumpAll(std::ostream & os, bool omitDuplicates)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 if (xmlReport_)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 dumpAllXML(os, omitDuplicates);
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 else
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 dumpAllNormal(os, omitDuplicates);
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 void Reports::dumpAllNormal(std::ostream & os, bool omitDuplicates)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 for (MessagesCollection::iterator it = messages_.begin(), end = messages_.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 it != end; ++it)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 const FileName & name = it->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
110
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 FileMessagesCollection & fileMessages = it->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
112
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 FileMessagesCollection::iterator fit = fileMessages.begin();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 FileMessagesCollection::iterator fend = fileMessages.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 int lastLineNumber = 0;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 SingleReport lastReport;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 for ( ; fit != fend; ++fit)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 int lineNumber = fit->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 const SingleReport & report = fit->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 const Rules::RuleName & rule = report.first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 const Message & msg = report.second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 if (omitDuplicates == false ||
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 lineNumber != lastLineNumber || report != lastReport)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 if (showRules_)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 if (vcFormat_)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 os << name << '(' << lineNumber << ") : "
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 << '(' << rule << ") " << msg << '\n';
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 else
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 os << name << ':' << lineNumber << ": "
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 << '(' << rule << ") " << msg << '\n';
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 else
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 if (vcFormat_)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 os << name << '(' << lineNumber << ") : "
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 << msg << '\n';
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 else
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 os << name << ':' << lineNumber << ": "
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 << msg << '\n';
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 lastLineNumber = lineNumber;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 lastReport = report;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
161
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 void Reports::dumpAllXML(std::ostream & os, bool omitDuplicates)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 writeXml(os, omitDuplicates);
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
166
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 void Reports::writeStd(std::ostream & os, bool omitDuplicates)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 for (MessagesCollection::iterator it = messages_.begin(), end = messages_.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 it != end; ++it)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 const FileName & name = it->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
174
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 FileMessagesCollection & fileMessages = it->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
176
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 FileMessagesCollection::iterator fit = fileMessages.begin();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 FileMessagesCollection::iterator fend = fileMessages.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
179
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 int lastLineNumber = 0;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 SingleReport lastReport;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 for ( ; fit != fend; ++fit)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 int lineNumber = fit->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 const SingleReport & report = fit->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 const Rules::RuleName & rule = report.first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 const Message & msg = report.second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 if (omitDuplicates == false ||
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 lineNumber != lastLineNumber || report != lastReport)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 os << name;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 os << ':' << lineNumber << ":";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 if (prefix_ != "")
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 os << " " << prefix_;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 if (showRules_)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 os << " " << rule;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 if (showRules_ || prefix_ != "")
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 os << ":";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 os << " " << msg << std::endl;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
207
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 lastLineNumber = lineNumber;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 lastReport = report;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
214
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 void Reports::writeVc(std::ostream & os, bool omitDuplicates)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
217
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 for (MessagesCollection::iterator it = messages_.begin(), end = messages_.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 it != end; ++it)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 const FileName & name = it->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
222
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 FileMessagesCollection & fileMessages = it->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
224
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 FileMessagesCollection::iterator fit = fileMessages.begin();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 FileMessagesCollection::iterator fend = fileMessages.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
227
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 int lastLineNumber = 0;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 SingleReport lastReport;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 for ( ; fit != fend; ++fit)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 int lineNumber = fit->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 const SingleReport & report = fit->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 const Rules::RuleName & rule = report.first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 const Message & msg = report.second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
236
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 if (omitDuplicates == false ||
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 lineNumber != lastLineNumber || report != lastReport)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 os << name;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 os << '(' << lineNumber << "):";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 if (prefix_ != "")
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 os << " " << prefix_;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 if (showRules_)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 os << " " << rule;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 if (showRules_ || prefix_ != "")
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 os << ":";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 os << " " << msg << std::endl;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
255
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 lastLineNumber = lineNumber;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 lastReport = report;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
262
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 void Reports::writeXml(std::ostream & os, bool omitDuplicates)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 os<< "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << std::endl;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 os << "<vera>\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
267
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 for (MessagesCollection::iterator it = messages_.begin(), end = messages_.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 it != end; ++it)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 const FileName & name = it->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
272
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 os << " <file name=\"" << name << "\">\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
274
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 FileMessagesCollection & fileMessages = it->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
276
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 FileMessagesCollection::iterator fit = fileMessages.begin();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 FileMessagesCollection::iterator fend = fileMessages.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
279
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
280 int lastLineNumber = 0;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
281 SingleReport lastReport;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
282 for ( ; fit != fend; ++fit)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 int lineNumber = fit->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 const SingleReport & report = fit->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 const Rules::RuleName & rule = report.first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 const Message & msg = report.second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
288
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 if (omitDuplicates == false ||
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 lineNumber != lastLineNumber || report != lastReport)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 if (showRules_)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 os << " <report rule=\"" << xmlEscape(rule)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 << "\" line=\"" << lineNumber
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 << "\">![CDATA[" << msg << "]]</report>\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 else
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
300 os << " <report line=\"" << lineNumber
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 << "\">![CDATA[" << msg << "]]</report>\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
303
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
304 lastLineNumber = lineNumber;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 lastReport = report;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
307 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
308
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
309 os << " </file>\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
311
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 os << "</vera>\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
314
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 void Reports::writeCheckStyle(std::ostream & os, bool omitDuplicates)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 std::string severity = prefix_;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 if (severity == "")
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 severity = "info";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
321 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
322 os<< "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << std::endl;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 os << "<checkstyle version=\"5.0\">\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
324
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 for (MessagesCollection::iterator it = messages_.begin(), end = messages_.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
326 it != end; ++it)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
327 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
328 const FileName & name = it->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
329
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
330 os << " <file name=\"" << name << "\">\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
331
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
332 FileMessagesCollection & fileMessages = it->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
333
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
334 FileMessagesCollection::iterator fit = fileMessages.begin();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
335 FileMessagesCollection::iterator fend = fileMessages.end();
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
336
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
337 int lastLineNumber = 0;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
338 SingleReport lastReport;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
339 for ( ; fit != fend; ++fit)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
340 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
341 int lineNumber = fit->first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
342 const SingleReport & report = fit->second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
343 const Rules::RuleName & rule = report.first;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
344 const Message & msg = report.second;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
345
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
346 if (omitDuplicates == false ||
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
347 lineNumber != lastLineNumber || report != lastReport)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
348 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
349 os << " <error source=\"" << xmlEscape(rule)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
350 << "\" severity=\"" << xmlEscape(severity)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
351 << "\" line=\"" << lineNumber
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
352 << "\" message=\"" << xmlEscape(msg)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
353 << "\" />\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
354
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
355 lastLineNumber = lineNumber;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
356 lastReport = report;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
357 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
358 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
359
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
360 os << " </file>\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
361 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
362
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
363 os << "</checkstyle>\n";
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
364 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
365
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
366 std::string Reports::xmlEscape(const std::string & msg)
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
367 {
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
368 std::string res = msg;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
369 boost::algorithm::replace_all(res, "&", "&amp;");
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
370 boost::algorithm::replace_all(res, "\"", "&quot;");
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
371 boost::algorithm::replace_all(res, "\'", "&apos;");
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
372 boost::algorithm::replace_all(res, "<", "&lt;");
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
373 boost::algorithm::replace_all(res, ">", "&gt;");
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
374 return res;
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
375 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
376
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
377 }
a7c0eb100760 CMake: import vera++ 1.3.0, closes #729
David Demelier <markand@malikania.fr>
parents:
diff changeset
378 }