mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-15 12:39:19 +00:00
[analyzer][DirectIvarAssignment] Turn DirectIvarAssignmentForAnnotatedFunctions into a checker option
Since this is an alpha checker, I don't worry about backward compatibility :) Differential Revision: https://reviews.llvm.org/D78121
This commit is contained in:
parent
fcf0764998
commit
500479dba3
@ -1118,13 +1118,15 @@ def MissingInvalidationMethod : Checker<"MissingInvalidationMethod">,
|
||||
|
||||
def DirectIvarAssignment : Checker<"DirectIvarAssignment">,
|
||||
HelpText<"Check for direct assignments to instance variables">,
|
||||
Documentation<HasAlphaDocumentation>;
|
||||
|
||||
def DirectIvarAssignmentForAnnotatedFunctions :
|
||||
Checker<"DirectIvarAssignmentForAnnotatedFunctions">,
|
||||
HelpText<"Check for direct assignments to instance variables in the methods "
|
||||
"annotated with objc_no_direct_instance_variable_assignment">,
|
||||
Dependencies<[DirectIvarAssignment]>,
|
||||
CheckerOptions<[
|
||||
CmdLineOption<Boolean,
|
||||
"AnnotatedFunctions",
|
||||
"Check for direct assignments to instance variables in the "
|
||||
"methods annotated with "
|
||||
"objc_no_direct_instance_variable_assignment",
|
||||
"false",
|
||||
InAlpha>
|
||||
]>,
|
||||
Documentation<HasAlphaDocumentation>;
|
||||
|
||||
} // end "alpha.osx.cocoa"
|
||||
|
@ -219,19 +219,12 @@ static bool AttrFilter(const ObjCMethodDecl *M) {
|
||||
// Register the checker that checks for direct accesses in all functions,
|
||||
// except for the initialization and copy routines.
|
||||
void ento::registerDirectIvarAssignment(CheckerManager &mgr) {
|
||||
mgr.registerChecker<DirectIvarAssignment>();
|
||||
auto Chk = mgr.registerChecker<DirectIvarAssignment>();
|
||||
if (mgr.getAnalyzerOptions().getCheckerBooleanOption(Chk,
|
||||
"AnnotatedFunctions"))
|
||||
Chk->ShouldSkipMethod = &AttrFilter;
|
||||
}
|
||||
|
||||
bool ento::shouldRegisterDirectIvarAssignment(const CheckerManager &mgr) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void ento::registerDirectIvarAssignmentForAnnotatedFunctions(
|
||||
CheckerManager &mgr) {
|
||||
mgr.getChecker<DirectIvarAssignment>()->ShouldSkipMethod = &AttrFilter;
|
||||
}
|
||||
|
||||
bool ento::shouldRegisterDirectIvarAssignmentForAnnotatedFunctions(
|
||||
const CheckerManager &mgr) {
|
||||
return true;
|
||||
}
|
||||
|
@ -8,6 +8,7 @@
|
||||
// CHECK-NEXT: alpha.clone.CloneChecker:MinimumCloneComplexity = 50
|
||||
// CHECK-NEXT: alpha.clone.CloneChecker:ReportNormalClones = true
|
||||
// CHECK-NEXT: alpha.cplusplus.STLAlgorithmModeling:AggressiveStdFindModeling = false
|
||||
// CHECK-NEXT: alpha.osx.cocoa.DirectIvarAssignment:AnnotatedFunctions = false
|
||||
// CHECK-NEXT: alpha.security.MmapWriteExec:MmapProtExec = 0x04
|
||||
// CHECK-NEXT: alpha.security.MmapWriteExec:MmapProtRead = 0x01
|
||||
// CHECK-NEXT: alpha.security.taint.TaintPropagation:Config = ""
|
||||
|
@ -1,4 +1,8 @@
|
||||
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.osx.cocoa.DirectIvarAssignmentForAnnotatedFunctions -verify -fblocks %s
|
||||
// RUN: %clang_analyze_cc1 -verify -fblocks %s \
|
||||
// RUN: -analyzer-checker=core \
|
||||
// RUN: -analyzer-checker=alpha.osx.cocoa.DirectIvarAssignment \
|
||||
// RUN: -analyzer-config \
|
||||
// RUN: alpha.osx.cocoa.DirectIvarAssignment:AnnotatedFunctions=true
|
||||
|
||||
typedef signed char BOOL;
|
||||
@protocol NSObject - (BOOL)isEqual:(id)object; @end
|
||||
@ -60,4 +64,4 @@ typedef signed char BOOL;
|
||||
_nonSynth = 0; // no-warning
|
||||
}
|
||||
|
||||
@end
|
||||
@end
|
||||
|
Loading…
x
Reference in New Issue
Block a user