Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <precomp.h>
21 : #include <adc_msg.hxx>
22 :
23 :
24 : // NOT FULLY DEFINED SERVICES
25 : #include <cosv/file.hxx>
26 : #include <cosv/tpl/tpltools.hxx>
27 :
28 :
29 : namespace autodoc
30 : {
31 :
32 :
33 1 : Messages::Messages()
34 : : aMissingDocs(),
35 : aParseErrors(),
36 : aInvalidConstSymbols(),
37 : aUnresolvedLinks(),
38 1 : aTypeVsMemberMisuses()
39 : {
40 1 : }
41 :
42 1 : Messages::~Messages()
43 : {
44 1 : }
45 :
46 : void
47 1 : Messages::WriteFile(const String & i_sOutputFilePath)
48 : {
49 : csv::File
50 1 : aOut(i_sOutputFilePath, csv::CFM_CREATE);
51 1 : aOut.open();
52 :
53 : // KORR_FUTURE Enable this when appropriate:
54 : WriteParagraph( aOut,
55 : aParseErrors,
56 1 : "Incompletely Parsed Files" );
57 :
58 : WriteParagraph( aOut,
59 : aMissingDocs,
60 1 : "Entities Without Documentation" );
61 :
62 : WriteParagraph( aOut,
63 : aInvalidConstSymbols,
64 1 : "Incorrectly Written Const Symbols" );
65 :
66 : WriteParagraph( aOut,
67 : aUnresolvedLinks,
68 1 : "Unresolved Links" );
69 :
70 : WriteParagraph( aOut,
71 : aTypeVsMemberMisuses,
72 1 : "Confusion or Misuse of <Type> vs. <Member>" );
73 1 : aOut.close();
74 1 : }
75 :
76 : void
77 2809 : Messages::Out_MissingDoc( const String & i_sEntity,
78 : const String & i_sFile,
79 : uintt i_nLine)
80 : {
81 : AddValue( aMissingDocs,
82 : i_sEntity,
83 : i_sFile,
84 2809 : i_nLine );
85 2809 : }
86 :
87 : void
88 2 : Messages::Out_ParseError( const String & i_sFile,
89 : uintt i_nLine)
90 : {
91 2 : aParseErrors[Location(i_sFile,i_nLine)] = String::Null_();
92 2 : }
93 :
94 : void
95 49 : Messages::Out_InvalidConstSymbol( const String & i_sText,
96 : const String & i_sFile,
97 : uintt i_nLine)
98 : {
99 : AddValue( aInvalidConstSymbols,
100 : i_sText,
101 : i_sFile,
102 49 : i_nLine );
103 49 : }
104 :
105 : void
106 10 : Messages::Out_UnresolvedLink( const String & i_sLinkText,
107 : const String & i_sFile,
108 : uintt i_nLine)
109 : {
110 : AddValue( aUnresolvedLinks,
111 : i_sLinkText,
112 : i_sFile,
113 10 : i_nLine );
114 10 : }
115 :
116 : void
117 101 : Messages::Out_TypeVsMemberMisuse( const String & i_sLinkText,
118 : const String & i_sFile,
119 : uintt i_nLine)
120 : {
121 : AddValue( aTypeVsMemberMisuses,
122 : i_sLinkText,
123 : i_sFile,
124 101 : i_nLine );
125 101 : }
126 :
127 : Messages &
128 2972 : Messages::The_()
129 : {
130 2972 : static Messages TheMessages_;
131 2972 : return TheMessages_;
132 : }
133 :
134 : void
135 2969 : Messages::AddValue( MessageMap & o_dest,
136 : const String & i_sText,
137 : const String & i_sFile,
138 : uintt i_nLine )
139 : {
140 : String &
141 2969 : rDest = o_dest[Location(i_sFile,i_nLine)];
142 : StreamLock
143 2969 : slDest(2000);
144 2969 : if (NOT rDest.empty())
145 77 : slDest() << rDest;
146 2969 : slDest() << "\n " << i_sText;
147 2969 : rDest = slDest().c_str();
148 2969 : }
149 :
150 : void
151 5 : Messages::WriteParagraph( csv::File & o_out,
152 : const MessageMap & i_source,
153 : const String & i_title )
154 : {
155 5 : StreamStr aLine(2000);
156 :
157 : // Write title of paragraph:
158 5 : aLine << i_title
159 5 : << "\n";
160 5 : o_out.write(aLine.c_str());
161 :
162 5 : aLine.seekp(0);
163 151 : for (uintt i = i_title.size(); i > 0; --i)
164 : {
165 146 : aLine << '-';
166 : }
167 5 : aLine << "\n\n";
168 5 : o_out.write(aLine.c_str());
169 :
170 : // Write Content
171 5 : MessageMap::const_iterator it = i_source.begin();
172 5 : MessageMap::const_iterator itEnd = i_source.end();
173 2899 : for ( ; it != itEnd; ++it )
174 : {
175 2894 : aLine.seekp(0);
176 2894 : aLine << (*it).first.sFile;
177 : // Nobody wants to see this, if we don't know the line:
178 2894 : if ((*it).first.nLine != 0)
179 : {
180 2858 : aLine << ", line "
181 5716 : << (*it).first.nLine;
182 : }
183 2894 : if (NOT (*it).second.empty())
184 : {
185 2892 : aLine << ':'
186 5784 : << (*it).second
187 2892 : << "\n";
188 : }
189 2894 : o_out.write(aLine.c_str());
190 : }
191 5 : o_out.write("\n\n\n");
192 5 : }
193 :
194 3 : } // namespace autodoc
195 :
196 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|