Skip to content

Commit 1464b96

Browse files
committed
merge some code from idea, and add EnhancedSwitchMigrationInspection
1 parent 17497fa commit 1464b96

185 files changed

Lines changed: 7108 additions & 3550 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎java-analysis-api/src/main/java/com/intellij/java/analysis/codeInspection/AbstractBaseJavaLocalInspectionTool.java‎

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
*/
1616
package com.intellij.java.analysis.codeInspection;
1717

18+
import com.intellij.java.language.JavaFeature;
1819
import com.intellij.java.language.JavaLanguage;
1920
import com.intellij.java.language.psi.JavaElementVisitor;
2021
import com.intellij.java.language.psi.PsiClass;
2122
import com.intellij.java.language.psi.PsiField;
2223
import com.intellij.java.language.psi.PsiMethod;
24+
import com.intellij.java.language.psi.util.PsiUtil;
2325
import consulo.java.deadCodeNotWorking.OldStyleInspection;
2426
import consulo.language.Language;
2527
import consulo.language.editor.inspection.*;
@@ -31,12 +33,32 @@
3133
import consulo.language.psi.PsiFile;
3234
import consulo.language.psi.PsiNamedElement;
3335
import consulo.language.psi.util.PsiTreeUtil;
34-
3536
import consulo.localize.LocalizeValue;
3637
import jakarta.annotation.Nonnull;
3738
import jakarta.annotation.Nullable;
3839

40+
import java.util.Set;
41+
3942
public abstract class AbstractBaseJavaLocalInspectionTool<State> extends LocalInspectionTool implements OldStyleInspection {
43+
/**
44+
* @return set of the features required for a given inspection. The inspection will not be launched on the files where
45+
* the corresponding features are not available.
46+
*/
47+
@Nonnull
48+
public Set<JavaFeature> requiredFeatures() {
49+
return Set.of();
50+
}
51+
52+
@Override
53+
public boolean isAvailableForFile(@Nonnull PsiFile file) {
54+
for (JavaFeature feature : requiredFeatures()) {
55+
if (!PsiUtil.isAvailable(feature, file)) {
56+
return false;
57+
}
58+
}
59+
return true;
60+
}
61+
4062
/**
4163
* Override this to report problems at method level.
4264
*

java-analysis-impl/src/main/java/com/siyeh/ig/psiutils/ParenthesesUtils.java renamed to java-analysis-api/src/main/java/com/intellij/java/analysis/codeInspection/ParenthesesUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.siyeh.ig.psiutils;
16+
package com.intellij.java.analysis.codeInspection;
1717

1818
import com.intellij.java.language.psi.*;
1919
import consulo.language.ast.IElementType;

‎java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInspection/ControlFlowUtils.java‎

Lines changed: 1076 additions & 0 deletions
Large diffs are not rendered by default.

‎java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInspection/EnhancedSwitchMigrationInspection.java‎

Lines changed: 1515 additions & 0 deletions
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.intellij.java.analysis.impl.codeInspection;
2+
3+
import consulo.configurable.ConfigurableBuilder;
4+
import consulo.configurable.UnnamedConfigurable;
5+
import consulo.java.analysis.impl.localize.JavaInspectionsLocalize;
6+
import consulo.language.editor.inspection.InspectionToolState;
7+
import consulo.util.xml.serializer.XmlSerializerUtil;
8+
import jakarta.annotation.Nullable;
9+
10+
/**
11+
* @author VISTALL
12+
* @since 2025-10-16
13+
*/
14+
public class EnhancedSwitchMigrationInspectionState implements InspectionToolState<EnhancedSwitchMigrationInspectionState> {
15+
public boolean myWarnOnlyOnExpressionConversion = true;
16+
public int myMaxNumberStatementsForBranch = 2;
17+
18+
@Nullable
19+
@Override
20+
public EnhancedSwitchMigrationInspectionState getState() {
21+
return this;
22+
}
23+
24+
@Nullable
25+
@Override
26+
public UnnamedConfigurable createConfigurable() {
27+
return ConfigurableBuilder.newBuilder()
28+
.checkBox(
29+
JavaInspectionsLocalize.inspectionSwitchExpressionMigrationWarnOnlyOnExpression(),
30+
() -> myWarnOnlyOnExpressionConversion,
31+
b -> myWarnOnlyOnExpressionConversion = b
32+
)
33+
// TODO support JavaInspectionsLocalize.inspectionSwitchExpressionMigrationExpressionMaxStatements()
34+
.buildUnnamed();
35+
}
36+
37+
@Override
38+
public void loadState(EnhancedSwitchMigrationInspectionState state) {
39+
XmlSerializerUtil.copyBean(state, this);
40+
}
41+
}

java-analysis-impl/src/main/java/com/siyeh/ig/psiutils/EquivalenceChecker.java renamed to java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInspection/EquivalenceChecker.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.siyeh.ig.psiutils;
16+
package com.intellij.java.analysis.impl.codeInspection;
1717

18+
import com.intellij.java.analysis.codeInspection.ParenthesesUtils;
1819
import com.intellij.java.language.psi.*;
1920
import consulo.language.ast.IElementType;
2021
import consulo.language.psi.PsiElement;

java-analysis-impl/src/main/java/com/siyeh/ig/psiutils/SideEffectChecker.java renamed to java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInspection/SideEffectChecker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.siyeh.ig.psiutils;
16+
package com.intellij.java.analysis.impl.codeInspection;
1717

1818
import com.intellij.java.analysis.impl.codeInspection.dataFlow.ContractValue;
1919
import com.intellij.java.analysis.impl.codeInspection.dataFlow.JavaMethodContractUtil;

0 commit comments

Comments
 (0)