From 5398b343e85c63ea9e5acd55359be02dcb1cbced Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 15 May 2020 16:01:23 +0700 Subject: [PATCH] ImplicitDefaultCharsetUsageInspection: support org.apache.commons.io.IOUtils (IDEA-240870) GitOrigin-RevId: 753b98a9e7ba715281d420508dd60560b97f0a7b --- ...ImplicitDefaultCharsetUsageInspection.java | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/internationalization/ImplicitDefaultCharsetUsageInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/internationalization/ImplicitDefaultCharsetUsageInspection.java index 8bee9899980c..b9eeb9c51aba 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/internationalization/ImplicitDefaultCharsetUsageInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/internationalization/ImplicitDefaultCharsetUsageInspection.java @@ -17,9 +17,9 @@ import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; +import com.siyeh.ig.callMatcher.CallMatcher; import com.siyeh.ig.psiutils.TypeUtils; import org.jetbrains.annotations.Nls; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -118,32 +118,23 @@ public class ImplicitDefaultCharsetUsageInspection extends BaseInspection { } private static class ImplicitDefaultCharsetUsageVisitor extends BaseInspectionVisitor { + private static final CallMatcher METHODS = CallMatcher.anyOf( + CallMatcher.exactInstanceCall(CommonClassNames.JAVA_LANG_STRING, "getBytes").parameterCount(0), + CallMatcher.staticCall("org.apache.commons.io.IOUtils", "toByteArray").parameterTypes(CommonClassNames.JAVA_LANG_STRING), + CallMatcher.staticCall("org.apache.commons.io.IOUtils", "toByteArray").parameterTypes("java.io.Reader"), + CallMatcher.staticCall("org.apache.commons.io.IOUtils", "toCharArray", "toString", "readLines").parameterTypes("java.io.InputStream"), + CallMatcher.staticCall("org.apache.commons.io.IOUtils", "toString").parameterTypes("java.net.URI"), + CallMatcher.staticCall("org.apache.commons.io.IOUtils", "toString").parameterTypes("java.net.URL"), + CallMatcher.staticCall("org.apache.commons.io.IOUtils", "toInputStream").parameterTypes(CommonClassNames.JAVA_LANG_CHAR_SEQUENCE), + CallMatcher.staticCall("org.apache.commons.io.IOUtils", "toInputStream").parameterTypes(CommonClassNames.JAVA_LANG_STRING) + ); @Override public void visitMethodCallExpression(PsiMethodCallExpression expression) { super.visitMethodCallExpression(expression); - final PsiReferenceExpression methodExpression = expression.getMethodExpression(); - @NonNls final String name = methodExpression.getReferenceName(); - if (!"getBytes".equals(name)) { - return; + if (METHODS.test(expression)) { + registerMethodCallError(expression, expression); } - final PsiMethod method = expression.resolveMethod(); - if (method == null) { - return; - } - final PsiParameterList parameterList = method.getParameterList(); - if (parameterList.getParametersCount() == 1) { - return; - } - final PsiClass aClass = method.getContainingClass(); - if (aClass == null) { - return; - } - final String qName = aClass.getQualifiedName(); - if (!CommonClassNames.JAVA_LANG_STRING.equals(qName)) { - return; - } - registerMethodCallError(expression, expression); } @Override