Commit fcb411a
Fix VSTHRD002 completion analysis and extensibility (#1648)
* Fix VSTHRD002 completion analysis and extensibility
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Address VSTHRD002 review feedback
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Fix code fix analyzer style violations
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Handle parenthesized awaiters in continuations
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Harden VSTHRD002 completion proofs
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Track VSTHRD002 ref aliases
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Refine VSTHRD002 control flow proofs
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Complete VSTHRD002 alias analysis
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Harden completion branches and awaiter fixes
Recognize nested conditional branches that definitely await the same task, and suppress invalid await code fixes for unrelated static GetAwaiter factories.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Make VSTHRD002 alias analysis flow-aware
Separate definite ref aliases used for completion proofs from potential aliases used for reassignment invalidation, and include closure writes from accessors and top-level statements.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Harden deferred VSTHRD002 analysis
Include continuation-scope aliases in deferred-write checks, validate awaiter chains semantically, preserve closure ordering, recognize WhenAll arrays, and avoid configured-method duplicates with VSTHRD103.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Respect VSTHRD103 exclusions in VSTHRD002
Keep configured blockers diagnosed when VSTHRD103 is excluded, and harden completion proofs for guarded conditions, nested closures, nested guards, conditional awaits, and custom ConfigureAwait methods.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Harden VSTHRD002 review edge cases
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Restrict await fixes to convertible methods
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Align completion proofs across analyzers
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Handle completed waits and forbidden awaits
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Avoid await fixes for ref-like signatures
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Harden VSTHRD002 completion analysis
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Guard await fixes against delegate references
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Reject by-ref parameter completion proofs
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Harden VSTHRD002 flow and code fixes
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Validate async alternative applicability
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Harden VSTHRD002 contract conversion
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Cover additional VSTHRD002 flow cases
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Harden VSTHRD002 flow analysis
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Harden VSTHRD002 caller conversion
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>11 files changed
Lines changed: 4518 additions & 330 deletions
File tree
- docfx/analyzers
- src
- Microsoft.VisualStudio.Threading.Analyzers.CSharp
- Microsoft.VisualStudio.Threading.Analyzers.CodeFixes
- test/Microsoft.VisualStudio.Threading.Analyzers.Tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
43 | 51 | | |
44 | 52 | | |
45 | 53 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
108 | 121 | | |
109 | 122 | | |
110 | 123 | | |
| |||
Lines changed: 1312 additions & 98 deletions
Large diffs are not rendered by default.
Lines changed: 3 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
208 | 208 | | |
209 | 209 | | |
210 | 210 | | |
211 | | - | |
212 | | - | |
213 | | - | |
214 | | - | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
215 | 214 | | |
216 | 215 | | |
217 | 216 | | |
| |||
Lines changed: 126 additions & 55 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
8 | 9 | | |
9 | 10 | | |
10 | 11 | | |
| |||
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
64 | | - | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
65 | 74 | | |
66 | 75 | | |
67 | 76 | | |
| |||
70 | 79 | | |
71 | 80 | | |
72 | 81 | | |
73 | | - | |
74 | | - | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
75 | 89 | | |
76 | 90 | | |
77 | 91 | | |
| |||
98 | 112 | | |
99 | 113 | | |
100 | 114 | | |
101 | | - | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
102 | 119 | | |
103 | | - | |
| 120 | + | |
104 | 121 | | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
| 122 | + | |
111 | 123 | | |
112 | 124 | | |
113 | | - | |
| 125 | + | |
114 | 126 | | |
115 | 127 | | |
116 | | - | |
| 128 | + | |
117 | 129 | | |
118 | | - | |
119 | | - | |
120 | | - | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
121 | 134 | | |
122 | | - | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
123 | 165 | | |
124 | 166 | | |
125 | 167 | | |
126 | 168 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
133 | 179 | | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
| 180 | + | |
139 | 181 | | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
153 | 194 | | |
154 | 195 | | |
155 | | - | |
156 | | - | |
157 | 196 | | |
158 | 197 | | |
159 | | - | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
160 | 202 | | |
161 | | - | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
162 | 206 | | |
163 | | - | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
164 | 217 | | |
165 | 218 | | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
172 | 244 | | |
173 | 245 | | |
174 | | - | |
| 246 | + | |
175 | 247 | | |
176 | 248 | | |
177 | 249 | | |
| |||
182 | 254 | | |
183 | 255 | | |
184 | 256 | | |
185 | | - | |
186 | | - | |
| 257 | + | |
187 | 258 | | |
188 | 259 | | |
0 commit comments