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

Eric Christopher echristo at gmail.com
Thu Oct 3 17:31:03 PDT 2013


Thanks Jordan!

-eric

On Thu, Oct 3, 2013 at 5:28 PM, Jordan Rose <jordan_rose at apple.com> wrote:
> And fixed in r191937. Sorry for the trouble.
>
> On Oct 3, 2013, at 16:41 , Richard Smith <richard at metafoo.co.uk> wrote:
>
> Temporarily reverted in r191936 until the layering violation is fixed.
>
>
> On Thu, Oct 3, 2013 at 11:44 AM, Jordan Rose <jordan_rose at apple.com> wrote:
>>
>> 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
>>
>>
>> _______________________________________________
>> 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