Skip to content

Commit 201b234

Browse files
Update README.md
1 parent ff75963 commit 201b234

File tree

1 file changed

+33
-23
lines changed

1 file changed

+33
-23
lines changed

README.md

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,6 @@ Add `CheckedExceptions.settings.json`:
131131

132132
```json
133133
{
134-
// If true, exceptions will not be read from XML documentation (default: false).
135-
"disableXmlDocInterop": false,
136-
137-
// If true, control flow analysis, with redundancy checks, is disabled (default: false).
138-
"disableControlFlowAnalysis": true,
139-
140134
// Exceptions to completely ignore during analysis (Glob pattern).
141135
"ignoredExceptions": [
142136
"System.*",
@@ -148,10 +142,19 @@ Add `CheckedExceptions.settings.json`:
148142
"informationalExceptions": {
149143
"System.IO.IOException": "Propagation",
150144
"System.TimeoutException": "Always"
151-
}
145+
},
146+
147+
// If true, exceptions will not be read from XML documentation (default: false).
148+
"disableXmlDocInterop": false,
149+
150+
// If true, control flow analysis, with redundancy checks, is disabled (default: false).
151+
"disableControlFlowAnalysis": true
152152
}
153153
```
154154

155+
> **Control flow analysis** powers redundancy checks (e.g. unreachable code, redundant catches, unused exception declarations).
156+
> Disabling it may improve analyzer performance slightly at the cost of precision.
157+
155158
Register in `.csproj`:
156159

157160
```xml
@@ -164,17 +167,23 @@ Register in `.csproj`:
164167

165168
## 🔍 Diagnostics
166169

167-
| ID | Message |
168-
| ---------- | --------------------------------------------------------- |
169-
| `THROW001` | ❗ Unhandled exception: must be caught or declared |
170-
| `THROW003` | 🚫 Avoid declaring general `Exception` in `[Throws]` |
171-
| `THROW004` | 🚫 Avoid throwing exception base type `Exception` |
172-
| `THROW005` | 🔁 Duplicate declarations of the same exception type in `[Throws]` |
173-
| `THROW006` | 🧬 Declared on override, missing from base |
174-
| `THROW007` | 🧬 Declared on base, missing from override |
175-
| `THROW008` | 📦 Exception already handled by declaration of super type in `[Throws]` |
176-
| `THROW009` | 🧹 Redundant catch clause |
177-
| `THROW010` | ⚠️ Throws attribute is not valid on full property declarations |
170+
| ID | Message |
171+
|------------|-------------------------------------------------------------------------|
172+
| `THROW001` | ❗ Unhandled exception: must be caught or declared |
173+
| `THROW002` | ℹ️ Ignored exception may cause runtime issues |
174+
| `THROW003` | 🚫 Avoid declaring exception type `System.Exception` |
175+
| `THROW004` | 🚫 Avoid throwing exception base type `System.Exception` |
176+
| `THROW005` | 🔁 Duplicate declarations of the same exception type in `[Throws]` |
177+
| `THROW006` | 🧬 Incompatible Throws declaration (not declared on base member) |
178+
| `THROW007` | 🧬 Missing Throws declaration for base member's exception |
179+
| `THROW008` | 📦 Exception already handled by declaration of super type in `[Throws]` |
180+
| `THROW009` | 🧹 Redundant catch typed clause |
181+
| `THROW010` | ⚠️ `[Throws]` is not valid on full property declarations |
182+
| `THROW011` | 📄 Exception in XML docs is not declared with `[Throws]` |
183+
| `THROW012` | 🧹 Redundant exception declaration (declared but never thrown) |
184+
| `THROW013` | 🧹 Redundant catch-all clause (no remaining exceptions to catch) |
185+
| `THROW020` | 🛑 Unreachable code detected |
186+
| `IDE001` | 🙈 Unreachable code (hidden diagnostic for editor greying) |
178187

179188
## 🛠 Code Fixes
180189

@@ -190,11 +199,12 @@ The analyzer offers the following automated code fixes:
190199

191200
## ✨ Advanced Features
192201

193-
- Supports lambdas, local functions, accessors, events
194-
- Analyzes exception inheritance trees
195-
- Merges `[Throws]` with `<exception>` from XML docs
196-
- Handles nullability context (`#nullable enable`)
197-
- Understands standard library exceptions (e.g. `Console.WriteLine``IOException`)
202+
* **Lambdas, local functions, accessors, events** – full support across member kinds
203+
* **Exception inheritance analysis** – understands base/derived exception relationships
204+
* **XML documentation interop** – merges `[Throws]` with `<exception>` tags from external libraries
205+
* **Nullability awareness** – respects `#nullable enable` context
206+
* **Standard library knowledge** – recognizes common framework exceptions (e.g. `Console.WriteLine``IOException`)
207+
* **Control flow analysis** – detects whether exceptions are reachable, flags redundant `catch` clauses, and reports unreachable code caused by prior throws or returns
198208

199209
---
200210

0 commit comments

Comments
 (0)