本文整理汇总了Java中com.android.tools.lint.client.api.JavaParser类的典型用法代码示例。如果您正苦于以下问题:Java JavaParser类的具体用法?Java JavaParser怎么用?Java JavaParser使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
JavaParser类属于com.android.tools.lint.client.api包,在下文中一共展示了JavaParser类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: isAddReplaceOpen
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
private static boolean isAddReplaceOpen(@NonNull JavaContext context, @NonNull MethodInvocation node) {
String methodName = node.astName().astValue();
if (ADD_TRANSACTION.equals(methodName) || OPEN_TRANSACTION.equals(methodName) || REPLACE_TRANSACTION.equals(methodName)) {
JavaParser.ResolvedNode resolved = context.resolve(node);
if (resolved instanceof JavaParser.ResolvedMethod) {
JavaParser.ResolvedMethod method = (JavaParser.ResolvedMethod) resolved;
JavaParser.ResolvedClass containingClass = method.getContainingClass();
if (containingClass.isSubclassOf(ACTIVITY_MANAGER, false)) {
return true;
}
}
}
return false;
}
开发者ID:massivedisaster,项目名称:ActivityFragmentManager,代码行数:17,代码来源:CommitTransaction.java
示例2: visitVariableDefinitionEntry
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
@Override
public boolean visitVariableDefinitionEntry(VariableDefinitionEntry node) {
Expression initializer = node.astInitializer();
if (initializer instanceof VariableReference) {
JavaParser.ResolvedNode resolved = mContext.resolve(initializer);
//noinspection SuspiciousMethodCalls
if (resolved != null && mVariables.contains(resolved)) {
JavaParser.ResolvedNode resolvedVariable = mContext.resolve(node);
if (resolvedVariable instanceof JavaParser.ResolvedVariable) {
JavaParser.ResolvedVariable variable = (JavaParser.ResolvedVariable) resolvedVariable;
mVariables.add(variable);
}
}
}
return super.visitVariableDefinitionEntry(node);
}
开发者ID:massivedisaster,项目名称:ActivityFragmentManager,代码行数:17,代码来源:CommitTransaction.java
示例3: visitBinaryExpression
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
@Override
public boolean visitBinaryExpression(BinaryExpression node) {
if (node.astOperator() == BinaryOperator.ASSIGN) {
Expression rhs = node.astRight();
if (rhs instanceof VariableReference) {
JavaParser.ResolvedNode resolved = mContext.resolve(rhs);
//noinspection SuspiciousMethodCalls
if (resolved != null && mVariables.contains(resolved)) {
JavaParser.ResolvedNode resolvedLhs = mContext.resolve(node.astLeft());
if (resolvedLhs instanceof JavaParser.ResolvedVariable) {
JavaParser.ResolvedVariable variable = (JavaParser.ResolvedVariable) resolvedLhs;
mVariables.add(variable);
}
}
}
}
return super.visitBinaryExpression(node);
}
开发者ID:massivedisaster,项目名称:ActivityFragmentManager,代码行数:19,代码来源:CommitTransaction.java
示例4: createJavaVisitor
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
@Override
public AstVisitor createJavaVisitor(final JavaContext context) {
return new ForwardingAstVisitor() {
@Override
public boolean visitMethodInvocation(MethodInvocation node) {
JavaParser.ResolvedNode resolve = context.resolve(node);
if (resolve instanceof JavaParser.ResolvedMethod) {
JavaParser.ResolvedMethod method = (JavaParser.ResolvedMethod) resolve;
// 方法所在的类校验
JavaParser.ResolvedClass containingClass = method.getContainingClass();
if (containingClass.matches("android.util.Log")) {
context.report(ISSUE, node, context.getLocation(node),
"请使用Ln,避免使用Log");
return true;
}
if (node.toString().startsWith("System.out.println")) {
context.report(ISSUE, node, context.getLocation(node),
"请使用Ln,避免使用System.out.println");
return true;
}
}
return super.visitMethodInvocation(node);
}
};
}
开发者ID:GavinCT,项目名称:MeituanLintDemo,代码行数:26,代码来源:LogDetector.java
示例5: parseResolvedMethod
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
public static JavaParser.ResolvedMethod parseResolvedMethod(
@NonNull JavaContext context, @NonNull Node node) {
if (null == context || null == node) {
return null;
}
JavaParser.ResolvedNode resolvedNode = null;
try {
resolvedNode = context.resolve(node);
} catch (Exception e) {
// TODO
}
return (resolvedNode instanceof JavaParser.ResolvedMethod) ?
(JavaParser.ResolvedMethod)resolvedNode : null;
}
开发者ID:squirrel-explorer,项目名称:eagleeye-android,代码行数:17,代码来源:NodeUtils.java
示例6: visitMethodInvocation
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
@Override
public boolean visitMethodInvocation(MethodInvocation node) {
if (1 == MissingApiChecker.MODE) {
JavaParser.ResolvedMethod resolvedMethod = NodeUtils.parseResolvedMethod(mContext, node);
if (null == resolvedMethod) {
return super.visitMethodInvocation(node);
}
String clazzName = resolvedMethod.getContainingClass().getName();
String methodSignature = resolvedMethod.getSignature();
boolean isMissing = validateRemoved(node, clazzName, methodSignature);
if (!isMissing) {
isMissing = validateHide(node, clazzName, methodSignature);
}
}
return super.visitMethodInvocation(node);
}
开发者ID:squirrel-explorer,项目名称:eagleeye-android,代码行数:19,代码来源:MissingApiCheckAstVisitor.java
示例7: searchSetPriorityNodes
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
/**
* 给定thread变量名,获取其所有的setPriority()节点列表
*
* @param operand
* @param node
* @param setPriorityNodes
*/
private void searchSetPriorityNodes(Node operand, Node node, ArrayList<MethodInvocation> setPriorityNodes) {
JavaParser.ResolvedMethod resolvedMethod = NodeUtils.parseResolvedMethod(mContext, node);
if (null != resolvedMethod &&
"setPriority".equals(resolvedMethod.getName()) &&
resolvedMethod.getContainingClass().isSubclassOf("java.lang.Thread", false) &&
node instanceof MethodInvocation) {
MethodInvocation methodInvocation = (MethodInvocation)node;
// 这里比较的是Node.toString()而非Node本身,原因在于,赋值节点的operand是Identifier,
// 而此处Thread.setPriority()节点的operand确实VariableReference。虽然它们的字符串值
// 相同,但是在AST里却是不同类型的节点。
if (methodInvocation.rawOperand().toString().equals(operand.toString())) {
setPriorityNodes.add(methodInvocation);
}
}
List<Node> children = node.getChildren();
if (null != children && !children.isEmpty()) {
for (Node child : node.getChildren()) {
searchSetPriorityNodes(operand, child, setPriorityNodes);
}
}
}
开发者ID:squirrel-explorer,项目名称:eagleeye-android,代码行数:30,代码来源:ThreadPriorityAstVisitor.java
示例8: visitMethodInvocation
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
@Override
public boolean visitMethodInvocation(MethodInvocation node) {
JavaParser.ResolvedMethod resolvedMethod = NodeUtils.parseResolvedMethod(mContext, node);
if (null == resolvedMethod) {
return super.visitMethodInvocation(node);
}
// The containing class must be subclass of android.app.ActivityManager
JavaParser.ResolvedClass resolvedClass = resolvedMethod.getContainingClass();
if (!resolvedClass.isSubclassOf("android.app.ActivityManager", false)) {
return super.visitMethodInvocation(node);
}
// Only handle ActivityManager.getRunningAppProcesses()
if (!getRunningAppProcesses_SIGNATURE.equals(resolvedMethod.getSignature())) {
return super.visitMethodInvocation(node);
}
mContext.report(
GetRunningAppProcessesDetector.ISSUE,
mContext.getLocation(node),
"Please DO NOT invoke ActivityManager.getRunningAppProcesses(), since it may cause performance issue and not applicable in Android 5.1+ .");
return super.visitMethodInvocation(node);
}
开发者ID:squirrel-explorer,项目名称:eagleeye-android,代码行数:26,代码来源:GetRunningAppProcessesAstVisitor.java
示例9: visitConstructorInvocation
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
@Override
public boolean visitConstructorInvocation(ConstructorInvocation node) {
JavaParser.ResolvedNode resolvedType = mContext.resolve(node.astTypeReference());
JavaParser.ResolvedClass resolvedClass = (JavaParser.ResolvedClass) resolvedType;
if (resolvedClass != null
&& resolvedClass.isSubclassOf("android.os.Message", false)){
mContext.report(ISSUE,
node,
mContext.getLocation(node),
"You should not call `new Message()` directly.");
return true;
}
return super.visitConstructorInvocation(node);
}
开发者ID:ljfxyj2008,项目名称:CustomLintDemo,代码行数:19,代码来源:MessageObtainDetector.java
示例10: isThisInstanceOfActivity_ForActivity
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
/**
* If setContentView is called by 'this' instance,
* this method will check if 'this' is an instance of a Class inherit from android.app.Activity, for eaxmple AppCompatActivity or FragmentActivity, and so on.
*/
private boolean isThisInstanceOfActivity_ForActivity(@NonNull JavaContext context, @NonNull MethodInvocation node) {
Node currentNode = node.getParent();
JavaParser.ResolvedNode resolved = context.resolve(JavaContext.findSurroundingClass(node));
JavaParser.ResolvedClass sorroundingClass = (JavaParser.ResolvedClass) resolved;
while (sorroundingClass != null) {
//System.out.println("sorroundingClass = " + sorroundingClass);
if ("android.app.Activity".equals(sorroundingClass.getName())) {
return true;
} else {
sorroundingClass = sorroundingClass.getSuperClass();
}
}
return false;
}
开发者ID:ljfxyj2008,项目名称:CustomLintDemo,代码行数:24,代码来源:ActivityFragmentLayoutNameDetector.java
示例11: isThisMethodHasLayoutAnnotation_ForActivity
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
/**
* As there are more than one methods overload "setContentView",
* we have to identify the one we want to check, whose param has an Annotation of "@LayoutRes".
* In fact, {public void setContentView(@LayoutRes int layoutResID)} is the one we are looking for.
*/
private boolean isThisMethodHasLayoutAnnotation_ForActivity(@NonNull JavaContext context, @NonNull MethodInvocation node) {
JavaParser.ResolvedNode resolved = context.resolve(node);
JavaParser.ResolvedMethod method = (JavaParser.ResolvedMethod) resolved;
if (node.astArguments().size() != 1) {
return false;
}
Iterable<JavaParser.ResolvedAnnotation> annotations = method.getParameterAnnotations(0);
for (JavaParser.ResolvedAnnotation annotation : annotations) {
if ("android.support.annotation.LayoutRes".equals(annotation.getName())) {
return true;
}
}
return false;
}
开发者ID:ljfxyj2008,项目名称:CustomLintDemo,代码行数:24,代码来源:ActivityFragmentLayoutNameDetector.java
示例12: isInflateCalledInOnCreateView_ForFragment
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
/**
* inflater.inflate() can be called from anywhere.
* We only care about the one call in {public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)}.
* This method whill check that.
*/
private boolean isInflateCalledInOnCreateView_ForFragment(@NonNull JavaContext context, @NonNull MethodInvocation node) {
Node surroundingNode = JavaContext.findSurroundingMethod(node);
JavaParser.ResolvedNode resolvedNode = context.resolve(surroundingNode);
try {
String resolvedNodeName = resolvedNode.getName();
if ("onCreateView".equals(resolvedNodeName)) {
return true;
}
} catch (Exception e) {
return false;
}
return false;
}
开发者ID:ljfxyj2008,项目名称:CustomLintDemo,代码行数:21,代码来源:ActivityFragmentLayoutNameDetector.java
示例13: getParamWithLayoutAnnotation_ForFragment
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
/**
* There are more than one methods overloading in the name of "inflate()" in android.view.LayoutInflater.<br>
* We only care about those having an param with `@LayoutRes` annotation,
* for example {public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)}.<br>
* This method will find out the resource param with an `@LayoutRes` annotation in String format, for example `R.layout.fragment_blank` .<br>
* If no such param exists, <B>null</B> will be returned.
*/
private String getParamWithLayoutAnnotation_ForFragment(@NonNull JavaContext context, @NonNull MethodInvocation node) {
Iterator<Expression> arguments = node.astArguments().iterator();
Expression argument = arguments.next();
JavaParser.ResolvedNode resolved = context.resolve(node);
JavaParser.ResolvedMethod method = (JavaParser.ResolvedMethod) resolved;
JavaParser.ResolvedAnnotation layoutParamAnnotation = method.getParameterAnnotation("android.support.annotation.LayoutRes", 0);
if (layoutParamAnnotation != null) {
return argument.toString();
} else {
return null;
}
}
开发者ID:ljfxyj2008,项目名称:CustomLintDemo,代码行数:23,代码来源:ActivityFragmentLayoutNameDetector.java
示例14: visitMethod
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
@Override
public void visitMethod(@NonNull JavaContext context, AstVisitor visitor, @NonNull MethodInvocation node) {
JavaParser.ResolvedClass sorroundingClass = (JavaParser.ResolvedClass)context.resolve(JavaContext.findSurroundingClass(node));
JavaParser.ResolvedMethod sorroundingMethod = (JavaParser.ResolvedMethod)context.resolve(JavaContext.findSurroundingMethod(node));
if (sorroundingMethod.getName().equals("onCreateViewHolder")
&& sorroundingClass.isSubclassOf("android.support.v7.widget.RecyclerView.Adapter", false)){
String layoutString = getParamWithLayoutAnnotation(context, node);
if (layoutString == null){
return;
}
if (!isFileStringStartWithPrefix(layoutString, "item_")) {
context.report(ISSUE,
node,
context.getLocation(node),
"Layout resource file in ViewHolder must be named with prefix `item_`.");
}
}
}
开发者ID:ljfxyj2008,项目名称:CustomLintDemo,代码行数:26,代码来源:ViewHolderItemNameDetector.java
示例15: getParamWithLayoutAnnotation
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
/**
* There are more than one methods overloading in the name of "inflate()" in android.view.LayoutInflater.<br>
* We only care about those having an param with `@LayoutRes` annotation,
* for example {public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)}.<br>
* This method will find out the resource param with an `@LayoutRes` annotation in String format, for example `R.layout.fragment_blank` .<br>
* If no such param exists, <B>null</B> will be returned.
*/
private String getParamWithLayoutAnnotation(@NonNull JavaContext context, @NonNull MethodInvocation node) {
Iterator<Expression> arguments = node.astArguments().iterator();
Expression argument = arguments.next();
JavaParser.ResolvedNode resolved = context.resolve(node);
JavaParser.ResolvedMethod method = (JavaParser.ResolvedMethod) resolved;
JavaParser.ResolvedAnnotation layoutParamAnnotation = method.getParameterAnnotation("android.support.annotation.LayoutRes", 0);
if (layoutParamAnnotation != null) {
return argument.toString();
} else {
return null;
}
}
开发者ID:ljfxyj2008,项目名称:CustomLintDemo,代码行数:23,代码来源:ViewHolderItemNameDetector.java
示例16: visitMethod
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
@Override
public void visitMethod(@NonNull JavaContext context, @Nullable AstVisitor visitor,
@NonNull MethodInvocation node) {
ResolvedNode resolved = context.resolve(node);
if (!(resolved instanceof ResolvedMethod) ||
!((ResolvedMethod) resolved).getContainingClass()
.isSubclassOf(PACKAGE_MANAGER_CLASS, false)) {
return;
}
StrictListAccessor<Expression, MethodInvocation> argumentList = node.astArguments();
// Ignore if the method doesn't fit our description.
if (argumentList != null && argumentList.size() == 2) {
TypeDescriptor firstParameterType = context.getType(argumentList.first());
if (firstParameterType != null
&& firstParameterType.matchesSignature(JavaParser.TYPE_STRING)) {
maybeReportIssue(calculateValue(context, argumentList.last()), context, node);
}
}
}
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:22,代码来源:GetSignaturesDetector.java
示例17: report
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
private static void report(JavaContext context, MethodInvocation node) {
// Make sure the call is on a view
JavaParser.ResolvedNode resolved = context.resolve(node);
if (resolved instanceof JavaParser.ResolvedMethod) {
JavaParser.ResolvedMethod method = (JavaParser.ResolvedMethod) resolved;
JavaParser.ResolvedClass containingClass = method.getContainingClass();
if (!containingClass.isSubclassOf(CLASS_VIEW, false)) {
return;
}
}
String name = node.astName().astValue();
String suggestion = Character.toLowerCase(name.charAt(2)) + name.substring(3);
String message = String.format(
// Keep in sync with {@link #getOldValue} and {@link #getNewValue} below!
"Suspicious method call; should probably call \"`%1$s`\" rather than \"`%2$s`\"",
suggestion, name);
context.report(ISSUE, node, context.getLocation(node.astName()), message);
}
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:20,代码来源:WrongCallDetector.java
示例18: checkClass
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
@Override
public void checkClass(@NonNull JavaContext context, @Nullable ClassDeclaration declaration,
@NonNull Node node, @NonNull JavaParser.ResolvedClass resolvedClass) {
String className = resolvedClass.getName();
if (mWrapperClasses.contains(className)) {
return; // ignore the wrapper classes
}
JavaParser.ResolvedClass superClass = resolvedClass.getSuperClass();
String superClassName = superClass.getName();
while (!mWrapperClasses.contains(superClassName)) {
if (mTargetClasses.contains(superClassName)) {
Node locationNode = node instanceof ClassDeclaration
? ((ClassDeclaration) node).astName() : node;
reportViolation(context, locationNode);
break;
}
superClass = superClass.getSuperClass();
superClassName = superClass.getName();
}
}
开发者ID:yongce,项目名称:AndroidArch,代码行数:22,代码来源:InheritDetectorBase.java
示例19: checkRuleViolation
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
private boolean checkRuleViolation(JavaContext context, MethodInvocation node) {
JavaParser.ResolvedMethod method = (JavaParser.ResolvedMethod) context.resolve(node);
JavaParser.ResolvedClass containingClass = method.getContainingClass();
String containingClassName = containingClass.getName();
if (mWrapperClassName.equals(containingClassName)) {
return false;
}
for (String targetClassName : mTargetClassNames) {
if (targetClassName.equals(containingClassName)) {
return true;
}
if (containingClass.isSubclassOf(targetClassName, false)) {
return true;
}
}
return false;
}
开发者ID:yongce,项目名称:AndroidArch,代码行数:19,代码来源:WrapperDetectorBase.java
示例20: isInsideDialogFragment
import com.android.tools.lint.client.api.JavaParser; //导入依赖的package包/类
private boolean isInsideDialogFragment(JavaContext context, MethodInvocation node) {
Node parent = node.getParent();
while (parent != null) {
Object resolvedNode = context.resolve(parent);
if (resolvedNode instanceof JavaParser.ResolvedMethod) {
JavaParser.ResolvedMethod method = (JavaParser.ResolvedMethod) resolvedNode;
if (isDialogFragment(method.getContainingClass())) {
return true;
}
}
parent = parent.getParent();
}
return false;
}
开发者ID:Piasy,项目名称:SafelyAndroid,代码行数:15,代码来源:UnsafeAndroidDetector.java
注:本文中的com.android.tools.lint.client.api.JavaParser类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论