1 //=-- ExperimentalChecks.h ----------------------------------------*- C++ -*-=//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines functions to instantiate and register experimental
11 // checks in ExprEngine.
13 //===----------------------------------------------------------------------===//
15 #include "InternalChecks.h"
16 #include "ExperimentalChecks.h"
17 #include "clang/StaticAnalyzer/Checkers/LocalCheckers.h"
19 using namespace clang
;
22 void ento::RegisterExperimentalChecks(ExprEngine
&Eng
) {
23 // These are checks that never belong as internal checks
25 RegisterCStringChecker(Eng
);
26 RegisterChrootChecker(Eng
);
27 RegisterMallocChecker(Eng
);
28 RegisterPthreadLockChecker(Eng
);
29 RegisterStreamChecker(Eng
);
30 RegisterUnreachableCodeChecker(Eng
);
33 void ento::RegisterExperimentalInternalChecks(ExprEngine
&Eng
) {
34 // These are internal checks that should eventually migrate to
35 // RegisterInternalChecks() once they have been further tested.
37 // Note that this must be registered after ReturnStackAddresEngsChecker.
38 RegisterReturnPointerRangeChecker(Eng
);
40 RegisterArrayBoundChecker(Eng
);
41 RegisterCastSizeChecker(Eng
);
42 RegisterCastToStructChecker(Eng
);
43 RegisterFixedAddressChecker(Eng
);
44 RegisterPointerArithChecker(Eng
);
45 RegisterPointerSubChecker(Eng
);