clang: include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18#ifndef LLVM_CLANG_STATICANALYZER_FRONTEND_CHECKERREGISTRY_H

19#define LLVM_CLANG_STATICANALYZER_FRONTEND_CHECKERREGISTRY_H

20

23#include "llvm/ADT/StringRef.h"

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65#ifndef CLANG_ANALYZER_API_VERSION_STRING

66

67

68

69

71#define CLANG_ANALYZER_API_VERSION_STRING CLANG_VERSION_STRING

72#endif

73

75

76class AnalyzerOptions;

77class DiagnosticsEngine;

78

79namespace ento {

80

81class CheckerManager;

82

83

84

85

86

87

88

90public:

94 CheckerRegistrationFns = {});

95

96

97

98

100

101

102private:

103

104

105

106

107 template <typename MGR, typename T> static void initializeManager(MGR &mgr) {

108 mgr.template registerChecker();

109 }

110

111 template static bool returnTrue(const CheckerManager &mgr) {

112 return true;

113 }

114

115public:

116

117

119 StringRef FullName, StringRef Desc, StringRef DocsUri,

120 bool IsHidden);

121

122

123

124

125

126

127 template

129 bool IsHidden = false) {

130

131

132 addChecker(&CheckerRegistry::initializeManager<CheckerManager, T>,

133 &CheckerRegistry::returnTrue, FullName, Desc, DocsUri,

134 IsHidden);

135 }

136

137

138

140

141

142

144

145

146

147

148

149

150

151

152

153

154 void addCheckerOption(StringRef OptionType, StringRef CheckerFullName,

155 StringRef OptionName, StringRef DefaultValStr,

156 StringRef Description, StringRef DevelopmentStatus,

157 bool IsHidden = false);

158

159

161

162

163

164

165

166

167

168

169

170

171 void addPackageOption(StringRef OptionType, StringRef PackageFullName,

172 StringRef OptionName, StringRef DefaultValStr,

173 StringRef Description, StringRef DevelopmentStatus,

174 bool IsHidden = false);

175

176

177

178

179

180

181 void initializeManager(CheckerManager &CheckerMgr) const;

182

183

185

186private:

187 template void resolveDependencies();

188 void resolveCheckerAndPackageOptions();

189

191

194};

195

196}

197}

198

199#endif

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

Defines version macros and version-related utility functions for Clang.

Stores options for the analyzer from the command line.

Concrete class used by the front-end to report problems and issues.

Manages a set of available checkers for running a static analysis.

void addCheckerOption(StringRef OptionType, StringRef CheckerFullName, StringRef OptionName, StringRef DefaultValStr, StringRef Description, StringRef DevelopmentStatus, bool IsHidden=false)

Registers an option to a given checker.

void addWeakDependency(StringRef FullName, StringRef Dependency)

Makes the checker with the full name fullName weak depend on the checker called dependency.

void addPackageOption(StringRef OptionType, StringRef PackageFullName, StringRef OptionName, StringRef DefaultValStr, StringRef Description, StringRef DevelopmentStatus, bool IsHidden=false)

Registers an option to a given package.

void initializeRegistry(const CheckerManager &Mgr)

Collects all enabled checkers in the field EnabledCheckers.

void addChecker(RegisterCheckerFn Fn, ShouldRegisterFunction sfn, StringRef FullName, StringRef Desc, StringRef DocsUri, bool IsHidden)

Adds a checker to the registry.

void addPackage(StringRef FullName)

Adds a package to the registry.

void validateCheckerOptions() const

Check if every option corresponds to a specific checker or package.

void addChecker(StringRef FullName, StringRef Desc, StringRef DocsUri, bool IsHidden=false)

Adds a checker to the registry.

void addDependency(StringRef FullName, StringRef Dependency)

Makes the checker with the full name fullName depend on the checker called dependency.

bool(*)(const CheckerManager &) ShouldRegisterFunction

void(*)(CheckerManager &) RegisterCheckerFn

Initialization functions perform any necessary setup for a checker.

The JSON file list parser is used to communicate input to InstallAPI.