@Override public void visitMethodCallExpression(PsiMethodCallExpression expression) { super.visitMethodCallExpression(expression); if (mPsiMethod == expression.resolveMethod()) { PsiExpression[] expressions = expression.getArgumentList().getExpressions(); if (expressions.length > mParamIndex) { PsiExpression paramExpr = expressions[mParamIndex]; String value = ConstantEvaluator.evaluateString(mContext, paramExpr, false); if (RO_SERIALNO.equals(value) && !inCatchPlayServicesNotAvailableException(expression)) { String message = String.format(MESSAGE_DEVICE_IDENTIFIERS, RO_SERIALNO); mContext.report(ISSUE, paramExpr, mContext.getLocation(paramExpr), message); } } } } }
String string = ConstantEvaluator.evaluateString(context, argument, false); String string = ConstantEvaluator.evaluateString(context, argument, false);
@Override public void visitMethodCallExpression(PsiMethodCallExpression expression) { String method = expression.getMethodExpression().getCanonicalText(); if (!method.endsWith(".putString") && !method.endsWith(".putLong") && !method .endsWith(".putDouble")) { return; } PsiElement token = expression.getMethodExpression().getQualifier(); if (token == null || !mBundleReference.textMatches(token)) { return; } PsiExpression[] expressions = expression.getArgumentList().getExpressions(); String evaluatedName = ConstantEvaluator.evaluateString(mContext, expressions[0], false); if (evaluatedName != null) { addParam(evaluatedName, expressions[1].getText(), expression); } }
String value = ConstantEvaluator.evaluateString(mContext, arg, false); if ("get".equals(value)) { PsiVariable variable = CleanupDetector.getVariableElement(expression); String value = ConstantEvaluator.evaluateString(mContext, arg, false); if (RO_SERIALNO.equals(value)) { mContext.report(ISSUE, arg, mContext.getLocation(arg),
String string = ConstantEvaluator.evaluateString(context, argument, false); String string = ConstantEvaluator.evaluateString(context, argument, false);
&& parameterList.getParametersCount() == argumentList.getExpressions().length) { PsiExpression argument = argumentList.getExpressions()[tagArgumentIndex]; String tag = ConstantEvaluator.evaluateString(context, argument, true); if (tag != null && tag.length() > 23) { String message = String.format(
@Override public void visitMethod(@NonNull JavaContext context, @Nullable JavaElementVisitor visitor, @NonNull PsiMethodCallExpression node, @NonNull PsiMethod method) { JavaEvaluator evaluator = context.getEvaluator(); if (!evaluator.isMemberInClass(method, "android.database.sqlite.SQLiteDatabase")) { return; } int parameterCount = evaluator.getParameterCount(method); if (parameterCount == 0) { return; } if (!evaluator.parameterHasType(method, 0, TYPE_STRING)) { return; } // Try to resolve the String and look for STRING keys PsiExpression argument = node.getArgumentList().getExpressions()[0]; String sql = ConstantEvaluator.evaluateString(context, argument, true); if (sql != null && (sql.startsWith("CREATE TABLE") || sql.startsWith("ALTER TABLE")) && sql.matches(".*\\bSTRING\\b.*")) { String message = "Using column type STRING; did you mean to use TEXT? " + "(STRING is a numeric type and its value can be adjusted; for example, " + "strings that look like integers can drop leading zeroes. See issue " + "explanation for details.)"; context.report(ISSUE, node, context.getLocation(node), message); } } }
String tag = ConstantEvaluator.evaluateString(context, argument, true); if (tag != null && tag.length() > 23) { String message = String.format(
Iterator<Expression> iterator = node.astArguments().iterator(); Node argument = iterator.next(); String sql = ConstantEvaluator.evaluateString(context, argument, true); if (sql != null && (sql.startsWith("CREATE TABLE") || sql.startsWith("ALTER TABLE")) && sql.matches(".*\\bSTRING\\b.*")) {
String value = ConstantEvaluator.evaluateString( context, node.getArgumentList().getExpressions()[1], false);
@Override public void visitMethod(@NonNull JavaContext context, @Nullable JavaElementVisitor visitor, @NonNull PsiMethodCallExpression call, @NonNull PsiMethod method) { String firebaseAnalytics = "com.google.firebase.analytics.FirebaseAnalytics"; if (!context.getEvaluator().isMemberInClass(method, firebaseAnalytics)) { return; } PsiExpression[] expressions = call.getArgumentList().getExpressions(); if (expressions.length < 2) { return; } PsiElement firstArgumentExpression = expressions[0]; String value = ConstantEvaluator.evaluateString(context, firstArgumentExpression, false); if (value == null) { return; } String error = getErrorForEventName(value); if (error != null) { context.report(INVALID_NAME, call, context.getLocation(call), error); } PsiExpression secondParameter = expressions[1]; List<BundleModification> bundleModifications = getBundleModifications(context, secondParameter); if (bundleModifications != null && !bundleModifications.isEmpty()) { validateEventParameters(context, bundleModifications, call); } }
return; String value = ConstantEvaluator.evaluateString(context, methodArgs[0], false); if (!"android.os.SystemProperties".equals(value)) { return;