@@ -61,6 +61,9 @@ static const char ToolElementName[] = "tool";
6161static const char ToolsElementName[] = " tools" ;
6262static const char TagsElementName[] = " tags" ;
6363static const char TagElementName[] = " tag" ;
64+ static constexpr char CheckHeadersElementName[] = " check-headers" ;
65+ static constexpr char CheckUnusedTemplatesElementName[] = " check-unused-templates" ;
66+ static constexpr char MaxCtuDepthElementName[] = " max-ctu-depth" ;
6467
6568ProjectFile::ProjectFile (QObject *parent) :
6669 QObject(parent)
@@ -92,6 +95,10 @@ void ProjectFile::clear()
9295 mSuppressions .clear ();
9396 mAddons .clear ();
9497 mClangAnalyzer = mClangTidy = false ;
98+ mAnalyzeAllVsConfigs = false ;
99+ mCheckHeaders = true ;
100+ mCheckUnusedTemplates = false ;
101+ mMaxCtuDepth = 10 ;
95102}
96103
97104bool ProjectFile::read (const QString &filename)
@@ -131,7 +138,13 @@ bool ProjectFile::read(const QString &filename)
131138 readImportProject (xmlReader);
132139
133140 if (insideProject && xmlReader.name () == AnalyzeAllVsConfigsElementName)
134- readAnalyzeAllVsConfigs (xmlReader);
141+ mAnalyzeAllVsConfigs = readBool (xmlReader);
142+
143+ if (insideProject && xmlReader.name () == CheckHeadersElementName)
144+ mCheckHeaders = readBool (xmlReader);
145+
146+ if (insideProject && xmlReader.name () == CheckUnusedTemplatesElementName)
147+ mCheckUnusedTemplates = readBool (xmlReader);
135148
136149 // Find include directory from inside project element
137150 if (insideProject && xmlReader.name () == IncludeDirElementName)
@@ -180,6 +193,9 @@ bool ProjectFile::read(const QString &filename)
180193 if (insideProject && xmlReader.name () == TagsElementName)
181194 readStringList (mTags , xmlReader, TagElementName);
182195
196+ if (insideProject && xmlReader.name () == MaxCtuDepthElementName)
197+ mMaxCtuDepth = readInt (xmlReader, mMaxCtuDepth );
198+
183199 break ;
184200
185201 case QXmlStreamReader::EndElement:
@@ -263,15 +279,41 @@ void ProjectFile::readImportProject(QXmlStreamReader &reader)
263279 } while (1 );
264280}
265281
266- void ProjectFile::readAnalyzeAllVsConfigs (QXmlStreamReader &reader)
282+ bool ProjectFile::readBool (QXmlStreamReader &reader)
267283{
284+ bool ret = false ;
268285 do {
269286 const QXmlStreamReader::TokenType type = reader.readNext ();
270287 switch (type) {
271288 case QXmlStreamReader::Characters:
272- mAnalyzeAllVsConfigs = (reader.text ().toString () == " true" );
289+ ret = (reader.text ().toString () == " true" );
273290 case QXmlStreamReader::EndElement:
274- return ;
291+ return ret;
292+ // Not handled
293+ case QXmlStreamReader::StartElement:
294+ case QXmlStreamReader::NoToken:
295+ case QXmlStreamReader::Invalid:
296+ case QXmlStreamReader::StartDocument:
297+ case QXmlStreamReader::EndDocument:
298+ case QXmlStreamReader::Comment:
299+ case QXmlStreamReader::DTD:
300+ case QXmlStreamReader::EntityReference:
301+ case QXmlStreamReader::ProcessingInstruction:
302+ break ;
303+ }
304+ } while (1 );
305+ }
306+
307+ int ProjectFile::readInt (QXmlStreamReader &reader, int defaultValue)
308+ {
309+ int ret = defaultValue;
310+ do {
311+ const QXmlStreamReader::TokenType type = reader.readNext ();
312+ switch (type) {
313+ case QXmlStreamReader::Characters:
314+ ret = reader.text ().toString ().toInt ();
315+ case QXmlStreamReader::EndElement:
316+ return ret;
275317 // Not handled
276318 case QXmlStreamReader::StartElement:
277319 case QXmlStreamReader::NoToken:
@@ -642,6 +684,18 @@ bool ProjectFile::write(const QString &filename)
642684 xmlWriter.writeCharacters (mAnalyzeAllVsConfigs ? " true" : " false" );
643685 xmlWriter.writeEndElement ();
644686
687+ xmlWriter.writeStartElement (CheckHeadersElementName);
688+ xmlWriter.writeCharacters (mCheckHeaders ? " true" : " false" );
689+ xmlWriter.writeEndElement ();
690+
691+ xmlWriter.writeStartElement (CheckUnusedTemplatesElementName);
692+ xmlWriter.writeCharacters (mCheckUnusedTemplates ? " true" : " false" );
693+ xmlWriter.writeEndElement ();
694+
695+ xmlWriter.writeStartElement (MaxCtuDepthElementName);
696+ xmlWriter.writeCharacters (QString::number (mMaxCtuDepth ));
697+ xmlWriter.writeEndElement ();
698+
645699 if (!mIncludeDirs .isEmpty ()) {
646700 xmlWriter.writeStartElement (IncludeDirElementName);
647701 foreach (QString incdir, mIncludeDirs ) {
0 commit comments