blob: 668a8e3f779947b2d813bc8eced10983e38eabcb [file] [log] [blame]
Googler7f19b2b2023-05-01 09:44:57 -07001# Verification and Inference for null safety
Wei Yi Tee543af742022-06-01 06:52:24 -07002
Lukasz Anforowiczaaa2a0f2023-04-11 09:01:14 -07003package(default_applicable_licenses = ["//:license"])
Googlerb1f1ce12023-02-17 15:37:52 -08004
Wei Yi Tee543af742022-06-01 06:52:24 -07005cc_library(
Dani Ferreira Franco Moura3d56a222022-11-29 03:12:55 -08006 name = "pointer_nullability_lattice",
Googler0b222ba2023-11-03 08:02:58 -07007 srcs = ["pointer_nullability_lattice.cc"],
Dani Ferreira Franco Moura3d56a222022-11-29 03:12:55 -08008 hdrs = ["pointer_nullability_lattice.h"],
Googler60745f52023-06-26 11:31:39 -07009 visibility = [
10 "//nullability/inference:__pkg__",
11 "//nullability/test:__pkg__",
12 ],
Dani Ferreira Franco Moura97f5c612022-12-17 13:28:24 -080013 deps = [
Sam McCalld127f932023-05-02 07:15:27 -070014 ":type_nullability",
Googlerf7154ea2023-12-11 09:30:25 -080015 "@absl//absl/base:nullability",
Dani Ferreira Franco Moura97f5c612022-12-17 13:28:24 -080016 "@absl//absl/container:flat_hash_map",
Googlerd4437312023-01-17 15:10:29 -080017 "@absl//absl/log:check",
Dani Ferreira Franco Moura97f5c612022-12-17 13:28:24 -080018 "@llvm-project//clang:analysis",
Sam McCall74bf8642023-06-16 11:21:42 -070019 "@llvm-project//clang:ast",
Googler2c9f53f2023-10-24 07:33:00 -070020 "@llvm-project//clang:basic",
21 "@llvm-project//llvm:Support",
Dani Ferreira Franco Moura97f5c612022-12-17 13:28:24 -080022 ],
Dani Ferreira Franco Moura3d56a222022-11-29 03:12:55 -080023)
24
25cc_library(
Wei Yi Tee543af742022-06-01 06:52:24 -070026 name = "pointer_nullability_matchers",
27 srcs = ["pointer_nullability_matchers.cc"],
28 hdrs = ["pointer_nullability_matchers.h"],
Googlerdc371e22023-12-13 00:29:09 -080029 visibility = ["//nullability/test:__pkg__"],
Wei Yi Tee543af742022-06-01 06:52:24 -070030 deps = [
Martin Brænne7a8d25c2023-08-23 03:52:30 -070031 ":type_nullability",
Wei Yi Tee1cd62af2022-06-09 00:56:46 -070032 "@llvm-project//clang:ast",
Wei Yi Tee543af742022-06-01 06:52:24 -070033 "@llvm-project//clang:ast_matchers",
Wei Yi Tee543af742022-06-01 06:52:24 -070034 ],
35)
36
Googlerbcfef622023-10-17 12:13:54 -070037cc_test(
38 name = "pointer_nullability_matchers_test",
39 srcs = ["pointer_nullability_matchers_test.cc"],
40 deps = [
41 ":pointer_nullability_matchers",
Martin Brænne297c5cc2023-12-12 00:30:51 -080042 ":type_nullability",
Googlerbcfef622023-10-17 12:13:54 -070043 "@llvm-project//clang:ast_matchers",
44 "@llvm-project//clang:testing",
45 "@llvm-project//llvm:Support",
46 "@llvm-project//third-party/unittest:gtest",
47 "@llvm-project//third-party/unittest:gtest_main",
48 ],
49)
50
Wei Yi Tee543af742022-06-01 06:52:24 -070051cc_library(
52 name = "pointer_nullability_analysis",
53 srcs = ["pointer_nullability_analysis.cc"],
54 hdrs = ["pointer_nullability_analysis.h"],
Googler60745f52023-06-26 11:31:39 -070055 visibility = [
56 "//nullability/inference:__pkg__",
57 "//nullability/test:__pkg__",
58 ],
Wei Yi Tee543af742022-06-01 06:52:24 -070059 deps = [
Wei Yi Tee8b58e192022-08-02 10:15:40 -070060 ":pointer_nullability",
Dani Ferreira Franco Moura3d56a222022-11-29 03:12:55 -080061 ":pointer_nullability_lattice",
Wei Yi Tee543af742022-06-01 06:52:24 -070062 ":pointer_nullability_matchers",
Sam McCall5fc2a802023-05-02 05:41:27 -070063 ":type_nullability",
Googlerf7154ea2023-12-11 09:30:25 -080064 "@absl//absl/base:nullability",
Lukasz Anforowicz2c34cae2022-08-26 07:19:20 -070065 "@absl//absl/log:check",
Wei Yi Tee543af742022-06-01 06:52:24 -070066 "@llvm-project//clang:analysis",
67 "@llvm-project//clang:ast",
68 "@llvm-project//clang:ast_matchers",
69 "@llvm-project//clang:basic",
Sam McCall1d9a0ce2023-07-28 02:55:29 -070070 "@llvm-project//llvm:Support",
Wei Yi Tee543af742022-06-01 06:52:24 -070071 ],
72)
73
Sam McCall74bf8642023-06-16 11:21:42 -070074cc_test(
75 name = "pointer_nullability_analysis_test",
76 srcs = ["pointer_nullability_analysis_test.cc"],
77 deps = [
78 ":pointer_nullability",
79 ":pointer_nullability_analysis",
Googlerf7154ea2023-12-11 09:30:25 -080080 "@absl//absl/base:nullability",
Sam McCall74bf8642023-06-16 11:21:42 -070081 "@llvm-project//clang:analysis",
82 "@llvm-project//clang:ast",
83 "@llvm-project//clang:basic",
84 "@llvm-project//clang:testing",
85 "@llvm-project//llvm:Support",
Sam McCall74bf8642023-06-16 11:21:42 -070086 "@llvm-project//third-party/unittest:gtest",
87 "@llvm-project//third-party/unittest:gtest_main",
88 ],
89)
90
Wei Yi Tee8b58e192022-08-02 10:15:40 -070091cc_library(
92 name = "pointer_nullability_diagnosis",
93 srcs = ["pointer_nullability_diagnosis.cc"],
94 hdrs = ["pointer_nullability_diagnosis.h"],
Googler7f19b2b2023-05-01 09:44:57 -070095 visibility = ["//nullability/test:__pkg__"],
Wei Yi Tee8b58e192022-08-02 10:15:40 -070096 deps = [
97 ":pointer_nullability",
Dani Ferreira Franco Moura4a73ca72022-12-14 10:23:56 -080098 ":pointer_nullability_lattice",
Wei Yi Tee8b58e192022-08-02 10:15:40 -070099 ":pointer_nullability_matchers",
Sam McCall5fc2a802023-05-02 05:41:27 -0700100 ":type_nullability",
Googlerf7154ea2023-12-11 09:30:25 -0800101 "@absl//absl/base:nullability",
Googler3d9adbe2023-07-20 12:41:23 -0700102 "@absl//absl/log:check",
Wei Yi Tee8b58e192022-08-02 10:15:40 -0700103 "@llvm-project//clang:analysis",
104 "@llvm-project//clang:ast",
105 "@llvm-project//clang:ast_matchers",
Wei Yi Tee036efdf2022-08-19 14:16:26 -0700106 "@llvm-project//clang:basic",
Googler3d9adbe2023-07-20 12:41:23 -0700107 "@llvm-project//llvm:Support",
Wei Yi Tee8b58e192022-08-02 10:15:40 -0700108 ],
109)
110
111cc_library(
112 name = "pointer_nullability",
Sam McCall5fc2a802023-05-02 05:41:27 -0700113 srcs = ["pointer_nullability.cc"],
Wei Yi Tee8b58e192022-08-02 10:15:40 -0700114 hdrs = ["pointer_nullability.h"],
Googler60745f52023-06-26 11:31:39 -0700115 visibility = [
116 "//nullability/inference:__pkg__",
117 "//nullability/test:__pkg__",
118 ],
Wei Yi Tee8b58e192022-08-02 10:15:40 -0700119 deps = [
Sam McCalla8680262023-09-21 05:55:27 -0700120 ":type_nullability",
Martin Brænne3e1cd482023-10-26 06:51:31 -0700121 "@absl//absl/base:nullability",
Wei Yi Tee8b58e192022-08-02 10:15:40 -0700122 "@llvm-project//clang:analysis",
123 "@llvm-project//clang:ast",
Wei Yi Tee9c161612022-08-19 14:20:02 -0700124 "@llvm-project//clang:basic",
Wei Yi Tee8b58e192022-08-02 10:15:40 -0700125 "@llvm-project//llvm:Support",
126 ],
127)
Sam McCalledd7d332023-04-17 04:47:58 -0700128
129cc_test(
130 name = "pointer_nullability_test",
131 srcs = ["pointer_nullability_test.cc"],
132 deps = [
133 ":pointer_nullability",
Sam McCalla8680262023-09-21 05:55:27 -0700134 ":type_nullability",
Sam McCalle37df982023-05-02 05:46:44 -0700135 "@llvm-project//clang:analysis",
Dmitri Gribenko61645e12023-07-17 04:46:21 -0700136 "@llvm-project//clang:ast",
Googlere1504a62023-07-18 14:03:23 -0700137 "@llvm-project//clang:basic",
Martin Brænne3e1cd482023-10-26 06:51:31 -0700138 "@llvm-project//third-party/unittest:gmock",
Sam McCalledd7d332023-04-17 04:47:58 -0700139 "@llvm-project//third-party/unittest:gtest",
140 "@llvm-project//third-party/unittest:gtest_main",
141 ],
142)
Sam McCall5fc2a802023-05-02 05:41:27 -0700143
144cc_library(
145 name = "type_nullability",
146 srcs = ["type_nullability.cc"],
147 hdrs = ["type_nullability.h"],
Googler60745f52023-06-26 11:31:39 -0700148 visibility = [
149 "//nullability/inference:__pkg__",
150 "//nullability/test:__pkg__",
151 ],
Sam McCall5fc2a802023-05-02 05:41:27 -0700152 deps = [
Googlerf7154ea2023-12-11 09:30:25 -0800153 "@absl//absl/base:nullability",
Sam McCall5fc2a802023-05-02 05:41:27 -0700154 "@absl//absl/log:check",
Sam McCalle644e1d2023-07-18 19:19:12 -0700155 "@llvm-project//clang:analysis",
Sam McCall5fc2a802023-05-02 05:41:27 -0700156 "@llvm-project//clang:ast",
157 "@llvm-project//clang:basic",
158 "@llvm-project//llvm:Support",
159 ],
160)
161
162cc_test(
163 name = "type_nullability_test",
164 srcs = ["type_nullability_test.cc"],
165 deps = [
166 ":type_nullability",
167 "@absl//absl/log:check",
Sam McCallb70563a2023-07-28 08:31:23 -0700168 "@llvm-project//clang:ast",
Sam McCall9a442aa2023-05-08 03:06:22 -0700169 "@llvm-project//clang:basic",
Sam McCall5fc2a802023-05-02 05:41:27 -0700170 "@llvm-project//clang:testing",
171 "@llvm-project//llvm:Support",
172 "@llvm-project//third-party/unittest:gmock",
173 "@llvm-project//third-party/unittest:gtest",
174 "@llvm-project//third-party/unittest:gtest_main",
175 ],
176)
Sam McCall0cdc04a2023-06-27 03:33:00 -0700177
178cc_library(
179 name = "proto_matchers",
180 testonly = 1,
181 srcs = ["proto_matchers.cc"],
182 hdrs = ["proto_matchers.h"],
183 visibility = [":__subpackages__"],
184 deps = [
185 "//third_party/protobuf",
Googlerf7154ea2023-12-11 09:30:25 -0800186 "@absl//absl/base:nullability",
Sam McCall0cdc04a2023-06-27 03:33:00 -0700187 "@llvm-project//llvm:Support",
188 "@llvm-project//third-party/unittest:gmock",
189 ],
190)
Googler523b3fe2023-11-06 09:44:25 -0800191
192cc_test(
193 name = "pointer_nullability_analysis_benchmark",
194 srcs = ["pointer_nullability_analysis_benchmark.cc"],
195 tags = ["benchmark"],
196 deps = [
197 ":pointer_nullability_analysis",
198 ":pointer_nullability_diagnosis",
Martin Brænne7ca48d72023-11-27 05:19:59 -0800199 "//third_party/benchmark",
Googlerf7154ea2023-12-11 09:30:25 -0800200 "@absl//absl/base:nullability",
Googler523b3fe2023-11-06 09:44:25 -0800201 "@absl//absl/log:check",
202 "@absl//absl/strings",
203 "@absl//absl/strings:string_view",
Googler523b3fe2023-11-06 09:44:25 -0800204 "@llvm-project//clang:analysis",
205 "@llvm-project//clang:ast",
206 "@llvm-project//clang:basic",
207 "@llvm-project//clang:testing",
208 ],
209)