diff options
Diffstat (limited to 'tools/diagtool/ListWarnings.cpp')
-rw-r--r-- | tools/diagtool/ListWarnings.cpp | 56 |
1 files changed, 25 insertions, 31 deletions
diff --git a/tools/diagtool/ListWarnings.cpp b/tools/diagtool/ListWarnings.cpp index 3e6e88306e24..8bf9df94011c 100644 --- a/tools/diagtool/ListWarnings.cpp +++ b/tools/diagtool/ListWarnings.cpp @@ -23,7 +23,7 @@ DEF_DIAGTOOL("list-warnings", "List warnings and their corresponding flags", ListWarnings) - + using namespace clang; using namespace diagtool; @@ -31,20 +31,19 @@ namespace { struct Entry { llvm::StringRef DiagName; llvm::StringRef Flag; - + Entry(llvm::StringRef diagN, llvm::StringRef flag) : DiagName(diagN), Flag(flag) {} - + bool operator<(const Entry &x) const { return DiagName < x.DiagName; } }; } static void printEntries(std::vector<Entry> &entries, llvm::raw_ostream &out) { - for (std::vector<Entry>::iterator it = entries.begin(), ei = entries.end(); - it != ei; ++it) { - out << " " << it->DiagName; - if (!it->Flag.empty()) - out << " [-W" << it->Flag << "]"; + for (const Entry &E : entries) { + out << " " << E.DiagName; + if (!E.Flag.empty()) + out << " [-W" << E.Flag << "]"; out << '\n'; } } @@ -52,23 +51,18 @@ static void printEntries(std::vector<Entry> &entries, llvm::raw_ostream &out) { int ListWarnings::run(unsigned int argc, char **argv, llvm::raw_ostream &out) { std::vector<Entry> Flagged, Unflagged; llvm::StringMap<std::vector<unsigned> > flagHistogram; - - ArrayRef<DiagnosticRecord> AllDiagnostics = getBuiltinDiagnosticsByName(); - - for (ArrayRef<DiagnosticRecord>::iterator di = AllDiagnostics.begin(), - de = AllDiagnostics.end(); - di != de; ++di) { - unsigned diagID = di->DiagID; - + + for (const DiagnosticRecord &DR : getBuiltinDiagnosticsByName()) { + const unsigned diagID = DR.DiagID; + if (DiagnosticIDs::isBuiltinNote(diagID)) continue; - + if (!DiagnosticIDs::isBuiltinWarningOrExtension(diagID)) continue; - - Entry entry(di->getName(), - DiagnosticIDs::getWarningOptionForDiag(diagID)); - + + Entry entry(DR.getName(), DiagnosticIDs::getWarningOptionForDiag(diagID)); + if (entry.Flag.empty()) Unflagged.push_back(entry); else { @@ -76,24 +70,24 @@ int ListWarnings::run(unsigned int argc, char **argv, llvm::raw_ostream &out) { flagHistogram[entry.Flag].push_back(diagID); } } - + out << "Warnings with flags (" << Flagged.size() << "):\n"; printEntries(Flagged, out); - + out << "Warnings without flags (" << Unflagged.size() << "):\n"; printEntries(Unflagged, out); out << "\nSTATISTICS:\n\n"; - double percentFlagged = ((double) Flagged.size()) - / (Flagged.size() + Unflagged.size()) * 100.0; - - out << " Percentage of warnings with flags: " - << llvm::format("%.4g",percentFlagged) << "%\n"; - + double percentFlagged = + ((double)Flagged.size()) / (Flagged.size() + Unflagged.size()) * 100.0; + + out << " Percentage of warnings with flags: " + << llvm::format("%.4g", percentFlagged) << "%\n"; + out << " Number of unique flags: " << flagHistogram.size() << '\n'; - + double avgDiagsPerFlag = (double) Flagged.size() / flagHistogram.size(); out << " Average number of diagnostics per flag: " << llvm::format("%.4g", avgDiagsPerFlag) << '\n'; @@ -102,7 +96,7 @@ int ListWarnings::run(unsigned int argc, char **argv, llvm::raw_ostream &out) { << flagHistogram["pedantic"].size() << '\n'; out << '\n'; - + return 0; } |