Handler class for thread safety warnings.
More...
#include <ThreadSafety.h>
|
| ThreadSafetyHandler () |
|
virtual | ~ThreadSafetyHandler () |
|
virtual void | handleInvalidLockExp (StringRef Kind, SourceLocation Loc) |
|
virtual void | handleUnmatchedUnlock (StringRef Kind, Name LockName, SourceLocation Loc) |
|
virtual void | handleIncorrectUnlockKind (StringRef Kind, Name LockName, LockKind Expected, LockKind Received, SourceLocation Loc) |
|
virtual void | handleDoubleLock (StringRef Kind, Name LockName, SourceLocation Loc) |
|
virtual void | handleMutexHeldEndOfScope (StringRef Kind, Name LockName, SourceLocation LocLocked, SourceLocation LocEndOfScope, LockErrorKind LEK) |
|
virtual void | handleExclusiveAndShared (StringRef Kind, Name LockName, SourceLocation Loc1, SourceLocation Loc2) |
|
virtual void | handleNoMutexHeld (StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, AccessKind AK, SourceLocation Loc) |
|
virtual void | handleMutexNotHeld (StringRef Kind, const NamedDecl *D, ProtectedOperationKind POK, Name LockName, LockKind LK, SourceLocation Loc, Name *PossibleMatch=nullptr) |
|
virtual void | handleNegativeNotHeld (StringRef Kind, Name LockName, Name Neg, SourceLocation Loc) |
|
virtual void | handleFunExcludesLock (StringRef Kind, Name FunName, Name LockName, SourceLocation Loc) |
|
virtual void | handleLockAcquiredBefore (StringRef Kind, Name L1Name, Name L2Name, SourceLocation Loc) |
| Warn that L1 cannot be acquired before L2. More...
|
|
virtual void | handleBeforeAfterCycle (Name L1Name, SourceLocation Loc) |
| Warn that there is a cycle in acquired_before/after dependencies. More...
|
|
virtual void | enterFunction (const FunctionDecl *FD) |
|
virtual void | leaveFunction (const FunctionDecl *FD) |
| Called by the analysis when finishing analysis of a function. More...
|
|
bool | issueBetaWarnings () |
|
void | setIssueBetaWarnings (bool b) |
|
Handler class for thread safety warnings.
Definition at line 73 of file ThreadSafety.h.
clang::threadSafety::ThreadSafetyHandler::ThreadSafetyHandler |
( |
| ) |
|
|
inline |
ThreadSafetyHandler::~ThreadSafetyHandler |
( |
| ) |
|
|
virtual |
virtual void clang::threadSafety::ThreadSafetyHandler::enterFunction |
( |
const FunctionDecl * |
FD | ) |
|
|
inlinevirtual |
Called by the analysis when starting analysis of a function. Used to issue suggestions for changes to annotations.
Definition at line 198 of file ThreadSafety.h.
virtual void clang::threadSafety::ThreadSafetyHandler::handleBeforeAfterCycle |
( |
Name |
L1Name, |
|
|
SourceLocation |
Loc |
|
) |
| |
|
inlinevirtual |
Warn that there is a cycle in acquired_before/after dependencies.
Definition at line 194 of file ThreadSafety.h.
virtual void clang::threadSafety::ThreadSafetyHandler::handleDoubleLock |
( |
StringRef |
Kind, |
|
|
Name |
LockName, |
|
|
SourceLocation |
Loc |
|
) |
| |
|
inlinevirtual |
Warn about lock function calls for locks which are already held.
- Parameters
-
Kind | – the capability's name parameter (role, mutex, etc). |
LockName | – A StringRef name for the lock expression, to be printed in the error message. |
Loc | – The location of the second lock expression. |
Definition at line 111 of file ThreadSafety.h.
Warn when a mutex is held exclusively and shared at the same point. For example, if a mutex is locked exclusively during an if branch and shared during the else branch.
- Parameters
-
Kind | – the capability's name parameter (role, mutex, etc). |
LockName | – A StringRef name for the lock expression, to be printed in the error message. |
Loc1 | – The location of the first lock expression. |
Loc2 | – The location of the second lock expression. |
Definition at line 140 of file ThreadSafety.h.
virtual void clang::threadSafety::ThreadSafetyHandler::handleFunExcludesLock |
( |
StringRef |
Kind, |
|
|
Name |
FunName, |
|
|
Name |
LockName, |
|
|
SourceLocation |
Loc |
|
) |
| |
|
inlinevirtual |
Warn when a function is called while an excluded mutex is locked. For example, the mutex may be locked inside the function.
- Parameters
-
Kind | – the capability's name parameter (role, mutex, etc). |
FunName | – The name of the function |
LockName | – A StringRef name for the lock expression, to be printed in the error message. |
Loc | – The location of the function call. |
Definition at line 185 of file ThreadSafety.h.
virtual void clang::threadSafety::ThreadSafetyHandler::handleIncorrectUnlockKind |
( |
StringRef |
Kind, |
|
|
Name |
LockName, |
|
|
LockKind |
Expected, |
|
|
LockKind |
Received, |
|
|
SourceLocation |
Loc |
|
) |
| |
|
inlinevirtual |
Warn about an unlock function call that attempts to unlock a lock with the incorrect lock kind. For instance, a shared lock being unlocked exclusively, or vice versa.
- Parameters
-
LockName | – A StringRef name for the lock expression, to be printed in the error message. |
Kind | – the capability's name parameter (role, mutex, etc). |
Expected | – the kind of lock expected. |
Received | – the kind of lock received. |
Loc | – The SourceLocation of the Unlock. |
Definition at line 102 of file ThreadSafety.h.
virtual void clang::threadSafety::ThreadSafetyHandler::handleInvalidLockExp |
( |
StringRef |
Kind, |
|
|
SourceLocation |
Loc |
|
) |
| |
|
inlinevirtual |
Warn about lock expressions which fail to resolve to lockable objects.
- Parameters
-
Kind | – the capability's name parameter (role, mutex, etc). |
Loc | – the SourceLocation of the unresolved expression. |
Definition at line 82 of file ThreadSafety.h.
virtual void clang::threadSafety::ThreadSafetyHandler::handleLockAcquiredBefore |
( |
StringRef |
Kind, |
|
|
Name |
L1Name, |
|
|
Name |
L2Name, |
|
|
SourceLocation |
Loc |
|
) |
| |
|
inlinevirtual |
Warn that L1 cannot be acquired before L2.
Definition at line 190 of file ThreadSafety.h.
Warn about situations where a mutex is sometimes held and sometimes not. The three situations are:
- a mutex is locked on an "if" branch but not the "else" branch, 2, or a mutex is only held at the start of some loop iterations,
- or when a mutex is locked but not unlocked inside a function.
- Parameters
-
Kind | – the capability's name parameter (role, mutex, etc). |
LockName | – A StringRef name for the lock expression, to be printed in the error message. |
LocLocked | – The location of the lock expression where the mutex is locked |
LocEndOfScope | – The location of the end of the scope where the mutex is no longer held |
LEK | – which of the three above cases we should warn for |
Definition at line 127 of file ThreadSafety.h.
Warn when a protected operation occurs while the specific mutex protecting the operation is not locked.
- Parameters
-
Kind | – the capability's name parameter (role, mutex, etc). |
D | – The decl for the protected variable or function |
POK | – The kind of protected operation (e.g. variable access) |
LockName | – A StringRef name for the lock expression, to be printed in the error message. |
LK | – The kind of access (i.e. read or write) that occurred |
Loc | – The location of the protected operation. |
Definition at line 163 of file ThreadSafety.h.
virtual void clang::threadSafety::ThreadSafetyHandler::handleNegativeNotHeld |
( |
StringRef |
Kind, |
|
|
Name |
LockName, |
|
|
Name |
Neg, |
|
|
SourceLocation |
Loc |
|
) |
| |
|
inlinevirtual |
Warn when acquiring a lock that the negative capability is not held.
- Parameters
-
Kind | – the capability's name parameter (role, mutex, etc). |
LockName | – The name for the lock expression, to be printed in the diagnostic. |
Neg | – The name of the negative capability to be printed in the diagnostic. |
Loc | – The location of the protected operation. |
Definition at line 175 of file ThreadSafety.h.
Warn when a protected operation occurs while no locks are held.
- Parameters
-
Kind | – the capability's name parameter (role, mutex, etc). |
D | – The decl for the protected variable or function |
POK | – The kind of protected operation (e.g. variable access) |
AK | – The kind of access (i.e. read or write) that occurred |
Loc | – The location of the protected operation. |
Definition at line 150 of file ThreadSafety.h.
virtual void clang::threadSafety::ThreadSafetyHandler::handleUnmatchedUnlock |
( |
StringRef |
Kind, |
|
|
Name |
LockName, |
|
|
SourceLocation |
Loc |
|
) |
| |
|
inlinevirtual |
Warn about unlock function calls that do not have a prior matching lock expression.
- Parameters
-
Kind | – the capability's name parameter (role, mutex, etc). |
LockName | – A StringRef name for the lock expression, to be printed in the error message. |
Loc | – The SourceLocation of the Unlock |
Definition at line 90 of file ThreadSafety.h.
bool clang::threadSafety::ThreadSafetyHandler::issueBetaWarnings |
( |
| ) |
|
|
inline |
virtual void clang::threadSafety::ThreadSafetyHandler::leaveFunction |
( |
const FunctionDecl * |
FD | ) |
|
|
inlinevirtual |
Called by the analysis when finishing analysis of a function.
Definition at line 201 of file ThreadSafety.h.
void clang::threadSafety::ThreadSafetyHandler::setIssueBetaWarnings |
( |
bool |
b | ) |
|
|
inline |
The documentation for this class was generated from the following files: