Skip to content

Commit a40a3c4

Browse files
committed
Fix plist filenames
1 parent 147315d commit a40a3c4

2 files changed

Lines changed: 17 additions & 11 deletions

File tree

lib/cppcheck.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,15 @@ class CppCheck::CppCheckLogger : public ErrorLogger
123123
mErrorList.clear();
124124
}
125125

126-
void openPlist(const std::string& filename, const std::vector<std::string>* files)
126+
void openPlist(const std::string& filename)
127127
{
128128
mPlistFile.open(filename);
129129
mPlistFile << ErrorLogger::plistHeader(version());
130-
mPlistFilenames = files;
130+
}
131+
132+
void setPlistFilenames(std::vector<std::string> files)
133+
{
134+
mPlistFilenames = std::move(files);
131135
}
132136

133137
void closePlist()
@@ -276,8 +280,8 @@ class CppCheck::CppCheckLogger : public ErrorLogger
276280
using Location = std::pair<std::string, int>;
277281
std::map<Location, std::set<std::string>> mLocationMacros; // What macros are used on a location?
278282

279-
const std::vector<std::string>* mPlistFilenames{};
280283
std::ofstream mPlistFile;
284+
std::vector<std::string> mPlistFilenames;
281285

282286
unsigned int mExitCode{};
283287

@@ -996,7 +1000,7 @@ unsigned int CppCheck::checkInternal(const FileWithDetails& file, const std::str
9961000
filename2 = file.spath();
9971001
const std::size_t fileNameHash = std::hash<std::string> {}(file.spath());
9981002
filename2 = mSettings.plistOutput + filename2.substr(0, filename2.find('.')) + "_" + std::to_string(fileNameHash) + ".plist";
999-
mLogger->openPlist(filename2, &files);
1003+
mLogger->openPlist(filename2);
10001004
}
10011005

10021006
// Parse comments and then remove them
@@ -1289,6 +1293,10 @@ unsigned int CppCheck::checkInternal(const FileWithDetails& file, const std::str
12891293
fdump.close();
12901294
}
12911295

1296+
if (!mSettings.plistOutput.empty()) {
1297+
mLogger->setPlistFilenames(std::move(files));
1298+
}
1299+
12921300
executeAddons(dumpFile, file);
12931301
} catch (const TerminateException &) {
12941302
// Analysis is terminated

lib/errorlogger.h

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -271,15 +271,13 @@ class CPPCHECKLIB ErrorLogger {
271271

272272
static std::string plistHeader(const std::string &version);
273273
static std::string plistData(const ErrorMessage &msg);
274-
static std::string plistFooter(const std::vector<std::string> *files) {
274+
static std::string plistFooter(const std::vector<std::string>& files) {
275275
std::ostringstream ostr;
276276
ostr << " </array>\r\n"
277-
<< " <key>files</key>\r\n"
278-
<< " <array>\r\n";
279-
if (files) {
280-
for (const std::string& file : *files)
281-
ostr << " <string>" << ErrorLogger::toxml(file) << "</string>\r\n";
282-
}
277+
<< " <key>files</key>\r\n"
278+
<< " <array>\r\n";
279+
for (const std::string& file : files)
280+
ostr << " <string>" << ErrorLogger::toxml(file) << "</string>\r\n";
283281
ostr << " </array>\r\n"
284282
<< "</dict>\r\n"
285283
<< "</plist>";

0 commit comments

Comments
 (0)