mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
50 lines
1.8 KiB
HTML
50 lines
1.8 KiB
HTML
<html>
|
|
<body>
|
|
Reports the code which is never reached according to data flow analysis.
|
|
It can be the result of previous always-true or always-false condition, unreachable loop body or
|
|
catch section. Usually (though not always) unreachable code is a consequence of a previous warning,
|
|
so check inspection warnings form "Nullability and data flow problems", "Constant values", or
|
|
"Redundant operation on empty container" to better understand the cause.
|
|
<p>Example:</p>
|
|
<pre><code>
|
|
void finishApplication() {
|
|
System.exit(0);
|
|
System.out.println("Application is terminated"); // Unreachable code
|
|
}
|
|
</code></pre>
|
|
<p>
|
|
Note that this inspection relies on method contract inference. In particular, if you call a static or final method
|
|
that always throws an exception, then the "always failing" contract will be inferred, and code after the method call
|
|
will be considered unreachable. For example:
|
|
</p>
|
|
<pre><code>
|
|
void run() {
|
|
performAction();
|
|
System.out.println("Action is performed"); // Unreachable code
|
|
}
|
|
|
|
static void performAction() {
|
|
throw new AssertionError();
|
|
}
|
|
</code></pre>
|
|
<p>
|
|
This may cause false-positives if any kind of code postprocessing is used, for example, if an annotation processor
|
|
later replaces the method body with something useful. To avoid false-positive warnings, suppress the automatic
|
|
contract inference with explicit <code>@org.jetbrains.annotations.Contract</code> annotation from
|
|
<code>org.jetbrains:annotations</code> package:
|
|
</p>
|
|
<pre><code>
|
|
void run() {
|
|
performAction();
|
|
System.out.println("Action is performed"); // No warning anymore
|
|
}
|
|
|
|
@Contract("-> _") // implementation will be replaced
|
|
static void performAction() {
|
|
throw new AssertionError();
|
|
}
|
|
</code></pre>
|
|
<p><small>New in 2024.1</small></p>
|
|
</body>
|
|
</html>
|