#include "ErrnoModeling.h"
#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
#include "clang/StaticAnalyzer/Core/Checker.h"
#include "clang/StaticAnalyzer/Core/CheckerManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/CallDescription.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
#include <optional>
usingnamespaceclang;
usingnamespaceento;
usingnamespaceerrno_modeling;
namespace {
class ErrnoTesterChecker : public Checker<eval::Call> { … };
}
void ErrnoTesterChecker::evalSetErrno(CheckerContext &C,
const CallEvent &Call) { … }
void ErrnoTesterChecker::evalGetErrno(CheckerContext &C,
const CallEvent &Call) { … }
void ErrnoTesterChecker::evalSetErrnoIfError(CheckerContext &C,
const CallEvent &Call) { … }
void ErrnoTesterChecker::evalSetErrnoIfErrorRange(CheckerContext &C,
const CallEvent &Call) { … }
void ErrnoTesterChecker::evalSetErrnoCheckState(CheckerContext &C,
const CallEvent &Call) { … }
bool ErrnoTesterChecker::evalCall(const CallEvent &Call,
CheckerContext &C) const { … }
void ento::registerErrnoTesterChecker(CheckerManager &Mgr) { … }
bool ento::shouldRegisterErrnoTesterChecker(const CheckerManager &Mgr) { … }