本文整理汇总了Java中com.android.tools.lint.detector.api.JavaContext类的典型用法代码示例。如果您正苦于以下问题:Java JavaContext类的具体用法?Java JavaContext怎么用?Java JavaContext使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
JavaContext类属于com.android.tools.lint.detector.api包,在下文中一共展示了JavaContext类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: checkNestedStringFormat
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
private static void checkNestedStringFormat(JavaContext context, UCallExpression call) {
UElement current = call;
while (true) {
current = LintUtils.skipParentheses(current.getUastParent());
if (current == null || current instanceof UMethod) {
// Reached AST root or code block node; String.format not inside Timber.X(..).
return;
}
if (current instanceof UCallExpression) {
UCallExpression maybeTimberLogCall = (UCallExpression) current;
JavaEvaluator evaluator = context.getEvaluator();
PsiMethod psiMethod = maybeTimberLogCall.resolve();
if (Pattern.matches(TIMBER_TREE_LOG_METHOD_REGEXP, psiMethod.getName())
&& evaluator.isMemberInClass(psiMethod, "timber.log.Timber")) {
LintFix fix = quickFixIssueFormat(call);
context.report(ISSUE_FORMAT, call, context.getLocation(call),
"Using 'String#format' inside of 'Timber'", fix);
return;
}
}
}
}
示例2: checkElement
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
private static boolean checkElement(JavaContext context, UCallExpression call, UElement element) {
if (element instanceof UBinaryExpression) {
UBinaryExpression binaryExpression = (UBinaryExpression) element;
UastBinaryOperator operator = binaryExpression.getOperator();
if (operator == PLUS || operator == PLUS_ASSIGN) {
Class argumentType = getType(binaryExpression);
if (argumentType == String.class) {
LintFix fix = quickFixIssueBinary(binaryExpression);
context.report(ISSUE_BINARY, call, context.getLocation(element),
"Replace String concatenation with Timber's string formatting", fix);
return true;
}
}
} else if (element instanceof UIfExpression) {
return checkConditionalUsage(context, call, element);
}
return false;
}
示例3: checkConditionalUsage
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
private static boolean checkConditionalUsage(JavaContext context, UCallExpression call,
UElement element) {
UElement thenElement;
UElement elseElement;
if (element instanceof UIfExpression) {
UIfExpression ifArg = (UIfExpression) element;
thenElement = ifArg.getThenExpression();
elseElement = ifArg.getElseExpression();
} else {
return false;
}
if (checkElement(context, call, thenElement)) {
return false;
}
return checkElement(context, call, elseElement);
}
示例4: checkClass
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void checkClass(JavaContext context, PsiClass node) {
super.checkClass(context, node);
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.isAbstract(node)) {
return;
}
boolean isFragmentPagerAdapter = evaluator.extendsClass(node, CLASS_FRAGMENT_PAGER_ADAPTER, false);
if (isFragmentPagerAdapter) return;
boolean isFragmentStatePagerAdapter = evaluator.extendsClass(node, CLASS_FRAGMENT_STATE_PAGER_ADAPTER, false);
if (isFragmentStatePagerAdapter) return;
boolean supportAutoPoint = evaluator.extendsClass(node, CLASS_AUTOPOINT_PAGER_ADAPTER, false);
if (!supportAutoPoint) {
context.report(ISSUE_PAGER_ADAPTER, node, context.getLocation(node),
"Pager Adapter 必须实现DDPagerAdapter,否则不支持自动打点 class:" + node.getName());
}
}
示例5: checkClass
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void checkClass(JavaContext context, PsiClass node) {
super.checkClass(context, node);
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.isAbstract(node)) {
return;
}
boolean supportAutoPoint = evaluator.extendsClass(node, CLASS_AUTO_POINT_ALERT_DIALOG, false);
if (!supportAutoPoint) {
context.report(ISSUE_ALERT_DIALOG, node, context.getLocation(node),
String.format("%s do not support auto point,should extends DDV7AlertDialog", node.toString()));
}
}
示例6: checkClass
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void checkClass(JavaContext context, PsiClass node) {
super.checkClass(context, node);
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.isAbstract(node)) {
return;
}
boolean supportAutoPoint = evaluator.extendsClass(node, CLASS_AUTO_POINT_EXPANDABLE_LIST_VIEW, false);
if (!supportAutoPoint) {
context.report(ISSUE_EXPANDABLE_LIST_VIEW, node, context.getLocation(node),
String.format("%s do not support auto point,should extends DDExpandableListView", node.toString()));
}
}
示例7: checkClass
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void checkClass(JavaContext context, PsiClass node) {
super.checkClass(context, node);
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.isAbstract(node)) {
return;
}
boolean supportAutoPoint = evaluator.extendsClass(node, CLASS_AUTO_POINT_POP_WINDOW, false);
if (!supportAutoPoint) {
context.report(ISSUE_POP_WINDOW, node, context.getLocation(node),
String.format("%s do not support auto point,should extends DDPopupWindow", node.toString()));
}
}
示例8: checkClass
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void checkClass(JavaContext context, PsiClass node) {
super.checkClass(context, node);
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.isAbstract(node)) {
return;
}
boolean supportAutoPoint = evaluator.extendsClass(node, CLASS_AUTO_POINT_GRID_VIEW, false);
if (!supportAutoPoint) {
context.report(ISSUE_GRID_VIEW, node, context.getLocation(node),
String.format("%s do not support auto point,should extends DDGridView", node.toString()));
}
}
示例9: checkClass
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void checkClass(JavaContext context, PsiClass node) {
super.checkClass(context, node);
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.isAbstract(node)) {
return;
}
boolean supportAutoPoint = evaluator.extendsClass(node, CLASS_AUTO_POINT_ALERT_DIALOG, false);
if (!supportAutoPoint) {
context.report(ISSUE_ALERT_DIALOG, node, context.getLocation(node),
String.format("%s do not support auto point,should extends DDAlertDialog", node.toString()));
}
}
示例10: checkClass
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void checkClass(JavaContext context, PsiClass node) {
super.checkClass(context, node);
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.isAbstract(node)) {
return;
}
boolean autopoint_dialog = evaluator.extendsClass(node, CLASS_AUTO_POINT_DIALOG, false);
boolean alert_dialog = evaluator.extendsClass(node, CLASS_ALERT_DIALOG, false);
boolean alert_v7_dialog = evaluator.extendsClass(node, CLASS_ALERT_V7_DIALOG, false);
if (!alert_v7_dialog && !alert_dialog && !autopoint_dialog) {
context.report(ISSUE_DIALOG, node, context.getLocation(node),
String.format("%s do not support auto point,should extends DDDialog", node.toString()));
}
}
示例11: checkClass
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void checkClass(JavaContext context, PsiClass node) {
super.checkClass(context, node);
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.isAbstract(node)) {
return;
}
boolean shouldIgnore = evaluator.extendsClass(node, CLASS_EXPANDABLE_LIST_VIEW, false);
if (shouldIgnore) return;
boolean supportAutoPoint = evaluator.extendsClass(node, CLASS_AUTO_POINT_LIST_VIEW, false);
if (!supportAutoPoint) {
context.report(ISSUE_LIST_VIEW, node, context.getLocation(node),
String.format("%s do not support auto point,should extends DDListView", node.toString()));
}
}
示例12: visitMethod
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void visitMethod(@NonNull JavaContext context, @Nullable JavaElementVisitor visitor,
@NonNull PsiMethodCallExpression node, @NonNull PsiMethod method) {
boolean isLayoutInflaterCall = isLayoutInflaterCall(context, node, method);
boolean isViewInflateCall = isInViewCall(context, node, method);
String name = method.getName();
boolean fromMethod = LAYOUTINFLATER_FROM.equals(name);
boolean viewInflateMethod = VIEW_INFLATE.equals(name);
if (isLayoutInflaterCall && fromMethod) {
context.report(ISSUE_LAYOUTINFLATER, node, context.getLocation(node),
"error use system LayoutInflater,should use LayoutInflaterWrapper.");
return;
}
if (viewInflateMethod && isViewInflateCall) {
context.report(ISSUE_VIEW_INFLATE, node, context.getLocation(node),
"error use View.inflate(),should use LayoutInflaterWrapper.inflate.");
return;
}
}
示例13: checkClass
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void checkClass(JavaContext context, PsiClass node) {
super.checkClass(context, node);
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.isAbstract(node)) {
return;
}
boolean supportAutoPoint = evaluator.extendsClass(node, CLASS_AUTOPOINT_RECYCLERVIEW_ADAPTER, false);
if (!supportAutoPoint) {
context.report(ISSUE_RECYCLER_ADAPTER, node, context.getLocation(node),
"Recycler Adapter 必须实现DDRecyclerAdapter,否则不支持自动打点 class:" + node.getName());
}
}
示例14: visitMethod
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void visitMethod(JavaContext context, JavaElementVisitor visitor,
PsiMethodCallExpression call, PsiMethod method) {
JavaEvaluator evaluator = context.getEvaluator();
if (evaluator.getParameterCount(method) == 0) {
PsiMethod parent = PsiTreeUtil.getParentOfType(call, PsiMethod.class);
if (parent != null) {
if (evaluator.isMemberInClass(method, CLASS_DIRECTOR) &&
evaluator.isMemberInSubClassOf(parent, CLASS_DIRECTOR_BACK_HANDLER, false)) {
context.report(ISSUE, call, context.getLocation(call),
"Can't call Stage.handleBack() in Stage.BackHandler.handleBack()");
} else if (evaluator.isMemberInClass(method, CLASS_STAGE) &&
evaluator.isMemberInSubClassOf(parent, CLASS_STAGE_BACK_HANDLER, false)) {
context.report(ISSUE, call, context.getLocation(call),
"Can't call Director.handleBack() in Director.BackHandler.handleBack()");
}
}
}
}
示例15: visitMethod
import com.android.tools.lint.detector.api.JavaContext; //导入依赖的package包/类
@Override
public void visitMethod(JavaContext context, JavaElementVisitor visitor, PsiMethodCallExpression call, PsiMethod method) {
super.visitMethod(context, visitor, call, method);
if (isRxSubscribeableClass(method.getContainingClass()) && !PsiType.VOID.equals(method.getReturnType())) {
PsiElement element = LintUtils.skipParentheses(call.getParent());
if (element instanceof PsiExpressionStatement) {
String message;
if (isRx2(method.getContainingClass())) {
message = "No reference to the disposable is kept";
} else {
message = "No reference to the subscription is kept";
}
context.report(ISSUE, call, context.getLocation(call), message);
}
}
}