r191910 - [analyzer] Replace bug category magic strings with shared constants.

Jordan Rose jordan_rose at apple.com
Thu Oct 3 11:44:05 PDT 2013


Ha, whoops. I didn't even notice that. I'll fix the layering one way or another later today or tomorrow morning. Thanks, Eric!

On Oct 3, 2013, at 11:24 , Eric Christopher <echristo at gmail.com> wrote:

> So this patch makes the core static analyzer depend upon headers in
> the checkers. I don't know if that's something we want to do?
> 
> -eric
> 
> On Thu, Oct 3, 2013 at 9:57 AM, Jordan Rose <jordan_rose at apple.com> wrote:
>> Author: jrose
>> Date: Thu Oct  3 11:57:20 2013
>> New Revision: 191910
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=191910&view=rev
>> Log:
>> [analyzer] Replace bug category magic strings with shared constants.
>> 
>> One small functionality change is to bring the sizeof-pointer checker in
>> line with the other checkers by making its category be "Logic error"
>> instead of just "Logic". There should be no other functionality changes.
>> 
>> Patch by Daniel Marjamäki!
>> 
>> Modified:
>>    cfe/trunk/include/clang/StaticAnalyzer/Checkers/CommonBugCategories.h
>>    cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
>>    cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
>>    cfe/trunk/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp
>>    cfe/trunk/lib/StaticAnalyzer/Checkers/CommonBugCategories.cpp
>> 
>> Modified: cfe/trunk/include/clang/StaticAnalyzer/Checkers/CommonBugCategories.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Checkers/CommonBugCategories.h?rev=191910&r1=191909&r2=191910&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/StaticAnalyzer/Checkers/CommonBugCategories.h (original)
>> +++ cfe/trunk/include/clang/StaticAnalyzer/Checkers/CommonBugCategories.h Thu Oct  3 11:57:20 2013
>> @@ -15,6 +15,7 @@ namespace clang {
>>   namespace ento {
>>     namespace categories {
>>       extern const char *CoreFoundationObjectiveC;
>> +      extern const char *LogicError;
>>       extern const char *MemoryCoreFoundationObjectiveC;
>>       extern const char *UnixAPI;
>>     }
>> 
>> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h?rev=191910&r1=191909&r2=191910&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h (original)
>> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h Thu Oct  3 11:57:20 2013
>> @@ -15,6 +15,7 @@
>> #define LLVM_CLANG_ANALYSIS_BUGTYPE
>> 
>> #include "clang/Basic/LLVM.h"
>> +#include "clang/StaticAnalyzer/Checkers/CommonBugCategories.h"
>> #include "llvm/ADT/FoldingSet.h"
>> #include <string>
>> 
>> @@ -54,10 +55,10 @@ class BuiltinBug : public BugType {
>>   const std::string desc;
>> public:
>>   BuiltinBug(const char *name, const char *description)
>> -    : BugType(name, "Logic error"), desc(description) {}
>> +    : BugType(name, categories::LogicError), desc(description) {}
>> 
>>   BuiltinBug(const char *name)
>> -    : BugType(name, "Logic error"), desc(name) {}
>> +    : BugType(name, categories::LogicError), desc(name) {}
>> 
>>   StringRef getDescription() const { return desc; }
>> };
>> 
>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp?rev=191910&r1=191909&r2=191910&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp Thu Oct  3 11:57:20 2013
>> @@ -231,7 +231,7 @@ ProgramStateRef CStringChecker::checkNon
>>       return NULL;
>> 
>>     if (!BT_Null)
>> -      BT_Null.reset(new BuiltinBug("Unix API",
>> +      BT_Null.reset(new BuiltinBug(categories::UnixAPI,
>>         "Null pointer argument in call to byte string function"));
>> 
>>     SmallString<80> buf;
>> @@ -525,7 +525,7 @@ void CStringChecker::emitOverlapBug(Chec
>>     return;
>> 
>>   if (!BT_Overlap)
>> -    BT_Overlap.reset(new BugType("Unix API", "Improper arguments"));
>> +    BT_Overlap.reset(new BugType(categories::UnixAPI, "Improper arguments"));
>> 
>>   // Generate a report for this bug.
>>   BugReport *report =
>> @@ -702,7 +702,7 @@ SVal CStringChecker::getCStringLength(Ch
>> 
>>       if (ExplodedNode *N = C.addTransition(state)) {
>>         if (!BT_NotCString)
>> -          BT_NotCString.reset(new BuiltinBug("Unix API",
>> +          BT_NotCString.reset(new BuiltinBug(categories::UnixAPI,
>>             "Argument is not a null-terminated string."));
>> 
>>         SmallString<120> buf;
>> @@ -762,7 +762,7 @@ SVal CStringChecker::getCStringLength(Ch
>> 
>>     if (ExplodedNode *N = C.addTransition(state)) {
>>       if (!BT_NotCString)
>> -        BT_NotCString.reset(new BuiltinBug("Unix API",
>> +        BT_NotCString.reset(new BuiltinBug(categories::UnixAPI,
>>           "Argument is not a null-terminated string."));
>> 
>>       SmallString<120> buf;
>> 
>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp?rev=191910&r1=191909&r2=191910&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp Thu Oct  3 11:57:20 2013
>> @@ -65,7 +65,7 @@ void WalkAST::VisitUnaryExprOrTypeTraitE
>>       PathDiagnosticLocation::createBegin(E, BR.getSourceManager(), AC);
>>     BR.EmitBasicReport(AC->getDecl(),
>>                        "Potential unintended use of sizeof() on pointer type",
>> -                       "Logic",
>> +                       categories::LogicError,
>>                        "The code calls sizeof() on a pointer type. "
>>                        "This can produce an unexpected result.",
>>                        ELoc, &R, 1);
>> 
>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/CommonBugCategories.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/CommonBugCategories.cpp?rev=191910&r1=191909&r2=191910&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/CommonBugCategories.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/CommonBugCategories.cpp Thu Oct  3 11:57:20 2013
>> @@ -11,6 +11,7 @@
>> namespace clang { namespace ento { namespace categories {
>> 
>> const char *CoreFoundationObjectiveC = "Core Foundation/Objective-C";
>> +const char *LogicError = "Logic error";
>> const char *MemoryCoreFoundationObjectiveC =
>>   "Memory (Core Foundation/Objective-C)";
>> const char *UnixAPI = "Unix API";
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits





More information about the cfe-commits mailing list