当前位置: 首页>>代码示例>>Java>>正文


Java MethodDefinition.isStatic方法代码示例

本文整理汇总了Java中com.strobel.assembler.metadata.MethodDefinition.isStatic方法的典型用法代码示例。如果您正苦于以下问题:Java MethodDefinition.isStatic方法的具体用法?Java MethodDefinition.isStatic怎么用?Java MethodDefinition.isStatic使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.strobel.assembler.metadata.MethodDefinition的用法示例。


在下文中一共展示了MethodDefinition.isStatic方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: selfCall

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
private boolean selfCall(Expression expr, MethodDefinition md) {
    if (!(expr.getOperand() instanceof MethodReference))
        return false;
    MethodReference mr = (MethodReference) expr.getOperand();
    if (!mr.isEquivalentTo(md))
        return false;
    switch (expr.getCode()) {
    case InvokeStatic:
        return md.isStatic();
    case InitObject:
    case InvokeSpecial:
        return md.isConstructor();
    case InvokeVirtual:
    case InvokeInterface:
        return !md.isStatic() && Exprs.isThis(expr.getArguments().get(0));
    default:
        return false;
    }
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:20,代码来源:InfiniteRecursion.java

示例2: visitMethod

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public void visitMethod(MethodDefinition md, MethodContext mc, TypeDefinition td) {
    if(isSerializable) {
        switch(md.getName()) {
        case "readResolve":
            if(md.getSignature().startsWith("()")) {
                if(!md.getSignature().equals("()Ljava/lang/Object;")) {
                    mc.report("ReadResolveMustReturnObject", 0);
                } else if(md.isStatic()) {
                    mc.report("ReadResolveIsStatic", 0);
                }
            }
            break;
        case "readObject":
            if(md.getSignature().equals("(Ljava/io/ObjectInputStream;)V")) {
                if(!md.isPrivate())
                    mc.report("SerializationMethodMustBePrivate", 0);
                if(Flags.testAny(md.getFlags(), Flags.SYNCHRONIZED))
                    mc.report("ReadObjectIsSynchronized", 0);
            }
            break;
        case "readObjectNoData":
            if(md.getSignature().equals("()V") && !md.isPrivate())
                mc.report("SerializationMethodMustBePrivate", 0);
            break;
        case "writeObject":
            if(md.getSignature().equals("(Ljava/io/ObjectOutputStream;)V")) {
                if(!md.isPrivate())
                    mc.report("SerializationMethodMustBePrivate", 0);
                if(Flags.testAny(md.getFlags(), Flags.SYNCHRONIZED) &&
                        td.getDeclaredMethods().stream().noneMatch(m -> m != md &&
                                Flags.testAny(m.getFlags(), Flags.SYNCHRONIZED)))
                    mc.report("WriteObjectIsSynchronized", 0);
            }
            break;
        }
    }
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:39,代码来源:SerializationIdiom.java

示例3: visitMethod

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public void visitMethod(MethodDefinition md, TypeDefinition td, MethodContext mc) {
    if (badMethodName(md.getName())) {
        if (Types.isInstance(td, "org/eclipse/osgi/util/NLS"))
            return;
        // javacc generated methods
        if (td.getName().equals("SimpleCharStream")
            && (md.getName().equals("ReInit") || md.getName().equals("BeginToken") || md.getName().equals("Done")
                || md.getName().equals("GetSuffix") || md.getName().equals("GetImage")))
            return;
        if (td.getName().endsWith("TokenManager") && md.getName().equals("ReInit"))
            return;
        int priority = 0;
        if (!td.isPublic())
            priority += 20;
        else {
            if (td.isFinal())
                priority += 3;
            if (md.isProtected())
                priority += 3;
            else if (md.isPackagePrivate())
                priority += 6;
            else if (md.isPrivate())
                priority += 10;
        }
        mc.report("BadNameOfMethod", priority);
    }
    String javaVersion = getFutureKeywordVersion(md.getName());
    if (javaVersion != null) {
        mc.report("BadNameOfMethodFutureKeyword", AccessLevel.of(md).select(0, 10, 20, 30), JAVA_VERSION.create(javaVersion));
    }
    if (!md.isStatic() && md.isPublic()) {
        MemberInfo mi = getMistakeFix(md);
        if (mi != null) {
            mc.report("BadNameOfMethodMistake", md.isDeprecated() ? 20 : 0, Roles.REPLACEMENT_METHOD.create(mi));
        }
    }
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:39,代码来源:Naming.java

示例4: visit

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@AstVisitor(nodes = AstNodes.EXPRESSIONS)
public void visit(Expression store, NodeChain nc, MethodContext mc, MethodDefinition md, TypeDefinition td) {
    if (store.getCode() != AstCode.Store)
        return;
    Variable var = (Variable) store.getOperand();
    Expression stringExpr = store.getArguments().get(0);
    if (!isStringBuilderToString(stringExpr))
        return;
    Expression appendSource = getAppendSource(stringExpr);
    if (appendSource == null)
        return;
    if (appendSource.getCode() != AstCode.Load)
        return;
    Variable loadVar = (Variable) appendSource.getOperand();
    if (loadVar != var)
        return;
    // String concatenation like a += x+y+z found
    if (!ValuesFlow.hasPhiSource(appendSource))
        return;
    List<Expression> phiArgs = new ArrayList<>(ValuesFlow.getSource(appendSource).getArguments());
    phiArgs.remove(stringExpr);
    NodeChain parent = nc;
    int priority = 0;
    while (parent != null) {
        Node node = parent.getNode();
        if (node instanceof Condition || node instanceof Switch)
            priority += 5;
        if (node instanceof Loop && !phiArgs.stream().allMatch(src -> Nodes.find(node, src::equals) != null)) {
            // Autogenerated by javacc
            if (md.getName().equals("initialise") && md.isStatic() && md.isPrivate() &&
                    Types.isString(md.getReturnType())
                && td.getSimpleName().equals("ParseException"))
                return;
            mc.report("StringConcatInLoop", priority, store);
            return;
        }
        parent = parent.getParent();
    }
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:40,代码来源:StringConcatInLoop.java

示例5: isOverridden

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
public boolean isOverridden(MethodDefinition md) {
    if(md.isStatic() || md.isFinal() || md.getDeclaringType().isFinal())
        return false;
    IMetadataResolver resolver = md.getDeclaringType().getResolver();
    MemberInfo mi = new MemberInfo(md);
    TypeHierarchy th = get(md.getDeclaringType());
    return th != null && th.isOverridden(resolver, mi);
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:9,代码来源:Hierarchy.java

示例6: visitType

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@Override
protected void visitType(TypeDefinition td) {
    for (MethodDefinition md : td.getDeclaredMethods()) {
        MethodData mdata = getMethodData(md);
        if (md.isFinal() || td.isFinal() || md.isStatic() || md.isPrivate()) {
            mdata.flags |= METHOD_FINAL;
        }
        visitMethod(mdata, md);
        for (MethodDefinition superMethod : Methods.findSuperMethods(md)) {
            getMethodData(superMethod).addSubMethod(mdata);
        }
    }
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:14,代码来源:MethodStats.java

示例7: checkMethod

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public boolean checkMethod(MethodDefinition md, TypeDefinition td) {
    return td.isPublic() && !td.isFinal() && !md.isStatic();
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:5,代码来源:UnsafeGetResource.java

示例8: check

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public boolean check(MethodDefinition md) {
    return !md.isStatic();
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:5,代码来源:StaticFieldFromInstanceMethod.java

示例9: checkMethod

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public boolean checkMethod(MethodDefinition md, TypeDefinition td) {
    return !td.isFinal() && !md.isStatic();
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:5,代码来源:SyncGetClass.java

示例10: isMain

import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
public static boolean isMain(MethodDefinition md) {
    return md.getName().equals("main") && md.isPublic() && md.isStatic() && md.getErasedSignature().startsWith("([Ljava/lang/String;)");
}
 
开发者ID:amaembo,项目名称:huntbugs,代码行数:4,代码来源:Methods.java


注:本文中的com.strobel.assembler.metadata.MethodDefinition.isStatic方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。