Skip to content

Commit 1607e8d

Browse files
marc-jasper-sonarsourceclaudejoke1196
authored andcommitted
SONARPY-3773 Create rule S8440: Querysets should use select_related() or prefetch_related() (#867)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: joke1196 <david.kunzmann@sonarsource.com> GitOrigin-RevId: 25a9d8333c86cc4439624592deb46e90fc0690d0
1 parent 27baffe commit 1607e8d

File tree

6 files changed

+682
-17
lines changed

6 files changed

+682
-17
lines changed

python-frontend/src/main/resources/org/sonar/python/types/custom_protobuf/django.db.models.base.protobuf

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
django.db.models.base;
3-
ModelBasedjango.db.models.base.ModelBase"builtins.type�
3+
ModelBasedjango.db.models.base.ModelBase"builtins.type�
44
Modeldjango.db.models.base.Model"builtins.object*�
55
__init__$django.db.models.base.Model.__init__"
66
None*D
@@ -9,7 +9,9 @@
99
args
1010
Any*
1111
kwargs
12-
Any@bdjango.db.models.base.ModelBase*�
12+
Any@bdjango.db.models.base.ModelBasert
13+
objects#django.db.models.base.Model.objectsD
14+
django.db.models.manager.Manager" django.db.models.manager.Manager*�
1315
__annotations__%django.db.models.base.__annotations__W
1416
builtins.dict[builtins.str,Any]
1517
builtins.str" builtins.str

python-frontend/src/main/resources/org/sonar/python/types/custom_protobuf/django.db.models.manager.protobuf

Lines changed: 311 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,322 @@
11

2-
django.db.models.manager�
3-
Manager django.db.models.manager.Manager"*SonarPythonAnalyzerFakeStub.CustomStubBase*�
2+
django.db.models.manager�J
3+
Manager django.db.models.manager.Manager"*SonarPythonAnalyzerFakeStub.CustomStubBase*�
4+
all$django.db.models.manager.Manager.all"D
5+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
6+
selfD
7+
django.db.models.manager.Manager" django.db.models.manager.Manager*�
8+
filter'django.db.models.manager.Manager.filter"D
9+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
10+
selfD
11+
django.db.models.manager.Manager" django.db.models.manager.Manager*
12+
args
13+
Any*
14+
kwargs
15+
Any*�
16+
exclude(django.db.models.manager.Manager.exclude"D
17+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
18+
selfD
19+
django.db.models.manager.Manager" django.db.models.manager.Manager*
20+
args
21+
Any*
22+
kwargs
23+
Any*�
24+
order_by)django.db.models.manager.Manager.order_by"D
25+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
26+
selfD
27+
django.db.models.manager.Manager" django.db.models.manager.Manager*
28+
field_names
29+
Any*�
30+
reverse(django.db.models.manager.Manager.reverse"D
31+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
32+
selfD
33+
django.db.models.manager.Manager" django.db.models.manager.Manager*�
34+
distinct)django.db.models.manager.Manager.distinct"D
35+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
36+
selfD
37+
django.db.models.manager.Manager" django.db.models.manager.Manager*
38+
field_names
39+
Any*�
40+
select_related/django.db.models.manager.Manager.select_related"D
41+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
42+
selfD
43+
django.db.models.manager.Manager" django.db.models.manager.Manager*
44+
fields
45+
Any*�
46+
prefetch_related1django.db.models.manager.Manager.prefetch_related"D
47+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
48+
selfD
49+
django.db.models.manager.Manager" django.db.models.manager.Manager*
50+
lookups
51+
Any*�
52+
defer&django.db.models.manager.Manager.defer"D
53+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
54+
selfD
55+
django.db.models.manager.Manager" django.db.models.manager.Manager*
56+
fields
57+
Any*�
58+
only%django.db.models.manager.Manager.only"D
59+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
60+
selfD
61+
django.db.models.manager.Manager" django.db.models.manager.Manager*
62+
fields
63+
Any*�
64+
using&django.db.models.manager.Manager.using"D
65+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
66+
selfD
67+
django.db.models.manager.Manager" django.db.models.manager.Manager*
68+
alias
69+
Any*�
70+
annotate)django.db.models.manager.Manager.annotate"D
71+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
72+
selfD
73+
django.db.models.manager.Manager" django.db.models.manager.Manager*
74+
args
75+
Any*
76+
kwargs
77+
Any*�
78+
alias&django.db.models.manager.Manager.alias"D
79+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
80+
selfD
81+
django.db.models.manager.Manager" django.db.models.manager.Manager*
82+
args
83+
Any*
84+
kwargs
85+
Any*�
86+
none%django.db.models.manager.Manager.none"D
87+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
88+
selfD
89+
django.db.models.manager.Manager" django.db.models.manager.Manager*�
90+
union&django.db.models.manager.Manager.union"D
91+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
92+
selfD
93+
django.db.models.manager.Manager" django.db.models.manager.Manager*
94+
other_qs
95+
Any*
96+
all
97+
Any *�
98+
intersection-django.db.models.manager.Manager.intersection"D
99+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
100+
selfD
101+
django.db.models.manager.Manager" django.db.models.manager.Manager*
102+
other_qs
103+
Any*�
104+
105+
difference+django.db.models.manager.Manager.difference"D
106+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
107+
selfD
108+
django.db.models.manager.Manager" django.db.models.manager.Manager*
109+
other_qs
110+
Any*�
111+
select_for_update2django.db.models.manager.Manager.select_for_update"D
112+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
113+
selfD
114+
django.db.models.manager.Manager" django.db.models.manager.Manager*
115+
nowait
116+
Any *
117+
skip_locked
118+
Any *
119+
of
120+
Any *
121+
no_key
122+
Any *�
123+
extra&django.db.models.manager.Manager.extra"D
124+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
125+
selfD
126+
django.db.models.manager.Manager" django.db.models.manager.Manager*
127+
args
128+
Any*
129+
kwargs
130+
Any*�
131+
values'django.db.models.manager.Manager.values"D
132+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
133+
selfD
134+
django.db.models.manager.Manager" django.db.models.manager.Manager*
135+
fields
136+
Any*
137+
expressions
138+
Any*�
139+
values_list,django.db.models.manager.Manager.values_list"D
140+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
141+
selfD
142+
django.db.models.manager.Manager" django.db.models.manager.Manager*
143+
fields
144+
Any*
145+
flat
146+
Any *
147+
named
148+
Any *�
149+
dates&django.db.models.manager.Manager.dates"D
150+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
151+
selfD
152+
django.db.models.manager.Manager" django.db.models.manager.Manager*
153+
154+
field_name
155+
Any*
156+
kind
157+
Any*
158+
order
159+
Any *�
160+
datetimes*django.db.models.manager.Manager.datetimes"D
161+
django.db.models.manager.Manager" django.db.models.manager.Manager*N
162+
selfD
163+
django.db.models.manager.Manager" django.db.models.manager.Manager*
164+
165+
field_name
166+
Any*
167+
kind
168+
Any*
169+
order
170+
Any *
171+
tzinfo
172+
Any *�
173+
get$django.db.models.manager.Manager.get"
174+
Any*N
175+
selfD
176+
django.db.models.manager.Manager" django.db.models.manager.Manager*
177+
args
178+
Any*
179+
kwargs
180+
Any*�
181+
create'django.db.models.manager.Manager.create"
182+
Any*N
183+
selfD
184+
django.db.models.manager.Manager" django.db.models.manager.Manager*
185+
kwargs
186+
Any*�
187+
get_or_create.django.db.models.manager.Manager.get_or_create".
188+
builtins.tuple[Any]
189+
Any"builtins.tuple*N
190+
selfD
191+
django.db.models.manager.Manager" django.db.models.manager.Manager*
192+
defaults
193+
Any *
194+
kwargs
195+
Any*�
196+
update_or_create1django.db.models.manager.Manager.update_or_create".
197+
builtins.tuple[Any]
198+
Any"builtins.tuple*N
199+
selfD
200+
django.db.models.manager.Manager" django.db.models.manager.Manager*
201+
defaults
202+
Any *
203+
create_defaults
204+
Any *
205+
kwargs
206+
Any*�
207+
first&django.db.models.manager.Manager.first"
208+
Any*N
209+
selfD
210+
django.db.models.manager.Manager" django.db.models.manager.Manager*�
211+
last%django.db.models.manager.Manager.last"
212+
Any*N
213+
selfD
214+
django.db.models.manager.Manager" django.db.models.manager.Manager*�
215+
earliest)django.db.models.manager.Manager.earliest"
216+
Any*N
217+
selfD
218+
django.db.models.manager.Manager" django.db.models.manager.Manager*
219+
fields
220+
Any*�
221+
latest'django.db.models.manager.Manager.latest"
222+
Any*N
223+
selfD
224+
django.db.models.manager.Manager" django.db.models.manager.Manager*
225+
fields
226+
Any*�
227+
count&django.db.models.manager.Manager.count"
228+
builtins.int" builtins.int*N
229+
selfD
230+
django.db.models.manager.Manager" django.db.models.manager.Manager*�
231+
exists'django.db.models.manager.Manager.exists"
232+
builtins.bool"builtins.bool*N
233+
selfD
234+
django.db.models.manager.Manager" django.db.models.manager.Manager*�
235+
contains)django.db.models.manager.Manager.contains"
236+
builtins.bool"builtins.bool*N
237+
selfD
238+
django.db.models.manager.Manager" django.db.models.manager.Manager*
239+
obj
240+
Any*�
241+
aggregate*django.db.models.manager.Manager.aggregate"9
242+
builtins.dict[Any,Any]
243+
Any
244+
Any"builtins.dict*N
245+
selfD
246+
django.db.models.manager.Manager" django.db.models.manager.Manager*
247+
args
248+
Any*
249+
kwargs
250+
Any*�
251+
in_bulk(django.db.models.manager.Manager.in_bulk"9
252+
builtins.dict[Any,Any]
253+
Any
254+
Any"builtins.dict*N
255+
selfD
256+
django.db.models.manager.Manager" django.db.models.manager.Manager*
257+
id_list
258+
Any *
259+
260+
field_name
261+
Any *�
262+
update'django.db.models.manager.Manager.update"
263+
builtins.int" builtins.int*N
264+
selfD
265+
django.db.models.manager.Manager" django.db.models.manager.Manager*
266+
kwargs
267+
Any*�
268+
delete'django.db.models.manager.Manager.delete".
269+
builtins.tuple[Any]
270+
Any"builtins.tuple*N
271+
selfD
272+
django.db.models.manager.Manager" django.db.models.manager.Manager*�
273+
bulk_create,django.db.models.manager.Manager.bulk_create",
274+
builtins.list[Any]
275+
Any"builtins.list*N
276+
selfD
277+
django.db.models.manager.Manager" django.db.models.manager.Manager*
278+
objs
279+
Any*
280+
281+
batch_size
282+
Any *
283+
kwargs
284+
Any*�
285+
bulk_update,django.db.models.manager.Manager.bulk_update"
286+
builtins.int" builtins.int*N
287+
selfD
288+
django.db.models.manager.Manager" django.db.models.manager.Manager*
289+
objs
290+
Any*
291+
fields
292+
Any*
293+
294+
batch_size
295+
Any *�
296+
iterator)django.db.models.manager.Manager.iterator"0
297+
typing.Iterator[Any]
298+
Any"typing.Iterator*N
299+
selfD
300+
django.db.models.manager.Manager" django.db.models.manager.Manager*
301+
302+
chunk_size
303+
Any *�
304+
explain(django.db.models.manager.Manager.explain"
305+
builtins.str" builtins.str*N
306+
selfD
307+
django.db.models.manager.Manager" django.db.models.manager.Manager*
308+
format
309+
Any *
310+
options
311+
Any*�
4312
raw$django.db.models.manager.Manager.raw"
5313
Any*N
6314
selfD
7315
django.db.models.manager.Manager" django.db.models.manager.Manager*
8316
args
9317
Any*
10318
kwargs
11-
Anyrw
12-
object'django.db.models.manager.Manager.objectD
13-
django.db.models.manager.Manager" django.db.models.manager.Manager*�
319+
Any*�
14320
__annotations__(django.db.models.manager.__annotations__W
15321
builtins.dict[builtins.str,Any]
16322
builtins.str" builtins.str

0 commit comments

Comments
 (0)