1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# pylint: disable=missing-docstring,invalid-name,undefined-variable,multiple-statements
# Variations of 'result'
result = ''
for number in ['1', '2', '3']:
result += number # [consider-using-join]
result = 'header'
for number in ['1', '2', '3']:
result += number # [consider-using-join]
result = another_result = ''
for number in ['1', '2', '3']:
result += number # [consider-using-join]
another_result = result = ''
for number in ['1', '2', '3']:
result += number # [consider-using-join]
result = 0 # result is not a string
for number in ['1', '2', '3']:
result += number
RESULT = '' # wrong name / initial variable missing
for number in ['1', '2', '3']:
result += [number]
string_variable = ''
result = string_variable # type of 'result' not obviously a string
for number in ['1', '2', '3']:
result += number
result = ''
another_result = '' # result defined too early
for number in ['1', '2', '3']:
result += [number]
for number in ['1', '2', '3']: # 'result'-definition missing
result += number
# Variations of 'number'
result = '' # no concatenation (iterator-name differs)
for name in ['1', '2', '3']:
result += number
result = '' # no concatenation (iterator-name differs)
for _ in ['1', '2', '3']:
result += number
# 'exprlist' is not a single name
for index, number in ['1', '2', '3']:
result += number
# Variations of 'iterable'
result = ''
for number in []:
result += number # [consider-using-join]
result = ''
for number in "a text":
result += number # [consider-using-join]
result = ''
for number in [1, 2, 3]:
result += number # [consider-using-join]
a_list = [1, 2, 3]
result = ''
for number in a_list:
result += number # [consider-using-join]
result = ''
for number in ['1', '2', '3']:
result += number # [consider-using-join]
result = ''
for number in undefined_iterable:
result += number # [consider-using-join]
# Variations of loop-body
result = '' # addition is not the only part of the body
for number in ['1', '2', '3']:
print(number)
result += number
result = '' # addition is not the only part of the body
for number in ['1', '2', '3']:
result += number
print(number)
result = '' # augmented addition is not a simple one
for number in ['1', '2', '3']:
result += '4' + number
result = '' # assignment is not augmented
for number in ['1', '2', '3']:
result = number
result = '' # augmented assignment is not an addition
for number in ['1', '2', '3']:
result -= number
result = '' # addition is not the 'number'-iterable
for number in ['1', '2', '3']:
result += another_number
result = ''
for number in ['1', '2', '3']: result += number # [consider-using-join]
result = ''
for number in ['1']:
result.result += number
# Does not emit if the body is more complex
result = {'context': 1}
result['context'] = 0
for number in ['1']:
result1 = 42 + int(number)
result['context'] += result1 * 24
# Does not crash if the previous sibling does not have AssignNames
result['context'] = 0
for number in ['1']:
result['context'] += 24
|