private boolean isCallToNonStaticInternalMethod(AsmEdge edge) { return edge.getTargetAsmClass() == getParent() && edge.getUsage() == SourceCodeEdgeUsage.CALLS_METHOD && !((AsmMethod) edge.getTo()).isStatic(); }
void addUsesOfClasses(AsmClass[] asmClasses) { for (AsmClass asmClass : asmClasses) { addEdge(new AsmEdge(this, asmClass, SourceCodeEdgeUsage.USES)); } }
private int getSourceLineNumber(AsmEdge edge) { if (edge.getSourceLineNumber() == 0 && edge.getFrom() instanceof AsmMethod) { int line = getMethodLineNumber((AsmMethod) edge.getFrom()); if (line > 0) { return line; } } return edge.getSourceLineNumber(); }
@Override public void visitEdge(AsmEdge edge) { if (edge.getTo().isDeprecated() && edge.getTo() instanceof AsmMethod) { AsmMethod targetMethod = (AsmMethod) edge.getTo(); SourceFile sourceFile = getSourceFile(asmClass); CheckMessage message = new CheckMessage(this, formatMessage(targetMethod)); message.setLine(edge.getSourceLineNumber()); sourceFile.log(message); } }
@Override public void visitEdge(AsmEdge edge) { AsmClass toAsmClass = edge.getTargetAsmClass(); Resource toResource = getResource(toAsmClass); Dependency fileEdge = createDependency(fromResource, toResource, null); if (fromResource != null && toResource != null) { createDependency(fromResource.getParent(), toResource.getParent(), fileEdge); } }
@Override public void visitEdge(AsmEdge edge) { if (edge.getTo() instanceof AsmMethod) { AsmMethod targetMethod = (AsmMethod) edge.getTo(); AsmClass targetClass = targetMethod.getParent(); if ("java/io/File".equals(targetClass.getInternalName()) && "deleteOnExit()V".equals(targetMethod.getKey())) { SourceFile sourceFile = getSourceFile(asmClass); CheckMessage message = new CheckMessage(this, "Do not use method 'File#deleteOnExit()'."); message.setLine(edge.getSourceLineNumber()); sourceFile.log(message); } } }
@Override public void visitEdge(AsmEdge edge) { AsmClass toAsmClass = edge.getTargetAsmClass(); Resource toResource = getResource(toAsmClass); Dependency fileEdge = createDependency(fromResource, toResource, null); if (fromResource != null && toResource != null) { createDependency(fromResource.getParent(), toResource.getParent(), fileEdge); } }
private boolean isCallToNonStaticInternalMethod(AsmEdge edge) { return edge.getTargetAsmClass() == getParent() && edge.getUsage() == SourceCodeEdgeUsage.CALLS_METHOD && !((AsmMethod) edge.getTo()).isStatic(); }
void addThrowsOfClasses(AsmClass[] asmClasses) { for (AsmClass asmClass : asmClasses) { addEdge(new AsmEdge(this, asmClass, SourceCodeEdgeUsage.THROWS)); } }
private void computeAccessedField() { if (!isConstructor()) { for (AsmEdge edge : getOutgoingEdges()) { if (isCallToNonStaticInternalField(edge)) { if (isFieldAccesingDifferentField((AsmField) edge.getTo())) { accessedField = null; break; } accessedField = (AsmField) edge.getTo(); } else if (isCallToNonStaticInternalMethod(edge)) { AsmMethod method = (AsmMethod) edge.getTo(); if (isMethodNotAccessorOrAccessingDifferentField(method)) { accessedField = null; break; } accessedField = method.getAccessedField(); } } } }
@Override public void visitEdge(AsmEdge edge) { if (asmClass != null && edge != null) { String internalNameTargetClass = edge.getTargetAsmClass().getInternalName(); if (!internalNames.containsKey(internalNameTargetClass)) { if (WildcardPattern.match(getToPatterns(), internalNameTargetClass)) { int sourceLineNumber = getSourceLineNumber(edge); logMessage(asmClass.getInternalName(), internalNameTargetClass, sourceLineNumber); } } else { int sourceLineNumber = getSourceLineNumber(edge); // we log only first occurrence with non-zero line number if exists Integer line = internalNames.get(internalNameTargetClass).getLine(); if ((line == null || line == 0) && sourceLineNumber != 0) { logMessage(asmClass.getInternalName(), internalNameTargetClass, sourceLineNumber); } } } }
private boolean isCallToNonStaticInternalField(AsmEdge edge) { return edge.getTargetAsmClass() == getParent() && edge.getUsage() == SourceCodeEdgeUsage.CALLS_FIELD && !((AsmField) edge.getTo()).isStatic(); }
public Set<AsmClass> getDistinctUsedAsmClasses() { Set<AsmClass> distinctUsedAsmClasses = new HashSet<AsmClass>(); for (AsmEdge usage : getOutgoingEdges()) { if (usage.getUsage() == SourceCodeEdgeUsage.USES) { distinctUsedAsmClasses.add((AsmClass) usage.getTo()); } } return distinctUsedAsmClasses; }
void addThrowsOfClasses(AsmClass[] asmClasses) { for (AsmClass asmClass : asmClasses) { addEdge(new AsmEdge(this, asmClass, SourceCodeEdgeUsage.THROWS)); } }
private void computeAccessedField() { if (!isConstructor()) { for (AsmEdge edge : getOutgoingEdges()) { if (isCallToNonStaticInternalField(edge)) { if (isFieldAccesingDifferentField((AsmField) edge.getTo())) { accessedField = null; break; } accessedField = (AsmField) edge.getTo(); } else if (isCallToNonStaticInternalMethod(edge)) { AsmMethod method = (AsmMethod) edge.getTo(); if (isMethodNotAccessorOrAccessingDifferentField(method)) { accessedField = null; break; } accessedField = method.getAccessedField(); } } } }