本文整理汇总了Java中org.apache.bcel.classfile.LocalVariableTable类的典型用法代码示例。如果您正苦于以下问题:Java LocalVariableTable类的具体用法?Java LocalVariableTable怎么用?Java LocalVariableTable使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
LocalVariableTable类属于org.apache.bcel.classfile包,在下文中一共展示了LocalVariableTable类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: getLocalVariableAtPC
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
* returns the local variable at an index int the scope of PC
*
* @param index the variable index
* @param PC the PC where the variable is used
*/
public static LocalVariable getLocalVariableAtPC(LocalVariableTable lvt, int index, int pc) {
int length = lvt.getTableLength();
LocalVariable[] lvs = lvt.getLocalVariableTable();
for(int i = 0; i < length; i++) {
if (lvs[i].getIndex() == index) {
int startPC = lvs[i].getStartPC();
if ((pc >= startPC) && (pc < (startPC + lvs[i].getLength())))
return lvs[i];
}
}
return null;
}
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:21,代码来源:LVTHelper.java
示例2: pushByLocalObjectLoad
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
private void pushByLocalObjectLoad(DismantleBytecode dbc, int register) {
Method m = dbc.getMethod();
LocalVariableTable lvt = m.getLocalVariableTable();
if (lvt != null) {
LocalVariable lv = LVTHelper.getLocalVariableAtPC(lvt, register, dbc.getPC());
if (lv != null) {
String signature = lv.getSignature();
pushByLocalLoad(signature, register);
return;
}
}
pushBySignature("");
}
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:14,代码来源:OpcodeStack.java
示例3: visitLocalVariableTable
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
* @see org.apache.bcel.classfile.Visitor
*/
public void visitLocalVariableTable(LocalVariableTable aTable)
{
for (Iterator iter = mVisitors.iterator(); iter.hasNext();) {
IDeepVisitor visitor = (IDeepVisitor) iter.next();
Visitor v = visitor.getClassFileVisitor();
aTable.accept(v);
}
}
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:12,代码来源:VisitorSet.java
示例4: getLocalTable
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
private static LocalVariableTable getLocalTable(Method m) {
LocalVariableTable lt = m.getLocalVariableTable();
if (lt == null) {
System.err.println("Could not get local variable table, did you "
+ "compile with the '-g' option?");
System.exit(1);
}
return lt;
}
开发者ID:pieterhijma,项目名称:cashmere,代码行数:12,代码来源:MethodTable.java
示例5: visitLocalVariableTable
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
@Override
public void visitLocalVariableTable(LocalVariableTable obj) {
super.visitLocalVariableTable(obj);
LocalVariable[] local_variable_table = obj.getLocalVariableTable();
for (LocalVariable aLocal_variable_table : local_variable_table)
aLocal_variable_table.accept(this);
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:8,代码来源:PreorderVisitor.java
示例6: getLocalVariableAtPC
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
* returns the local variable at an index int the scope of PC
*
* @param lvt
* the local variable table
* @param index
* the variable index
* @param pc
* the PC where the variable is used
*/
public static LocalVariable getLocalVariableAtPC(@Nonnull LocalVariableTable lvt, int index, int pc) {
int length = lvt.getTableLength();
LocalVariable[] lvs = lvt.getLocalVariableTable();
for (int i = 0; i < length; i++) {
if (lvs[i].getIndex() == index) {
int startPC = lvs[i].getStartPC();
if ((pc >= startPC) && (pc < (startPC + lvs[i].getLength())))
return lvs[i];
}
}
return null;
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:25,代码来源:LVTHelper.java
示例7: getLocalVariableAnnotation
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public static LocalVariableAnnotation getLocalVariableAnnotation(Method method, int local, int position1, int position2) {
LocalVariableTable localVariableTable = method.getLocalVariableTable();
String localName = "?";
if (localVariableTable != null) {
LocalVariable lv1 = localVariableTable.getLocalVariable(local, position1);
if (lv1 == null) {
lv1 = localVariableTable.getLocalVariable(local, position2);
position1 = position2;
}
if (lv1 != null)
localName = lv1.getName();
else
for (LocalVariable lv : localVariableTable.getLocalVariableTable()) {
if (lv.getIndex() == local) {
if (!localName.equals("?") && !localName.equals(lv.getName())) {
// not a single consistent name
localName = "?";
break;
}
localName = lv.getName();
}
}
}
LineNumberTable lineNumbers = method.getLineNumberTable();
if (lineNumbers == null)
return new LocalVariableAnnotation(localName, local, position1);
int line = lineNumbers.getSourceLine(position1);
return new LocalVariableAnnotation(localName, local, position1, line);
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:31,代码来源:LocalVariableAnnotation.java
示例8: checkLocalVariableName
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
* Get the name of given local variable (if possible) and store it in the
* HeuristicPropertySet.
*
* @param lvt
* the LocalVariableTable
* @param local
* index of the local
* @param pc
* program counter value of the instruction
*/
private void checkLocalVariableName(LocalVariableTable lvt, int local, int pc,
WarningPropertySet<DeadLocalStoreProperty> propertySet) {
if (lvt != null) {
LocalVariable lv = lvt.getLocalVariable(local, pc);
if (lv != null) {
String localName = lv.getName();
propertySet.setProperty(DeadLocalStoreProperty.LOCAL_NAME, localName);
}
}
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:23,代码来源:FindDeadLocalStores.java
示例9: visit
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
@Override
public void visit(Code obj) {
if (!getMethod().isPublic() && !getMethod().isProtected())
return;
SignatureParser p = new SignatureParser(getMethodSig());
LocalVariableTable t = obj.getLocalVariableTable();
if (t == null)
return;
ParameterProperty property = new ParameterProperty();
int index = getMethod().isStatic() ? 0 : 1;
int parameterNumber = 0;
for (Iterator<String> i = p.parameterSignatureIterator(); i.hasNext();) {
String s = i.next();
LocalVariable localVariable = t.getLocalVariable(index, 0);
if (localVariable != null) {
String name = localVariable.getName();
if (s.equals("J") && (name.toLowerCase().indexOf("instant") >= 0 || name.startsWith("date"))) {
// System.out.println(getFullyQualifiedMethodName() + " " + s + " " + index + " " + name);
property.setParamWithProperty(parameterNumber, true);
}
}
if (s.equals("J") || s.equals("D"))
index += 2;
else
index += 1;
parameterNumber++;
}
if (!property.isEmpty()) {
// System.out.println(getFullyQualifiedMethodName() + " " + property);
database.setProperty(getMethodDescriptor(), property);
}
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:37,代码来源:TrainLongInstantfParams.java
示例10: visit
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
@Override
public void visit(LocalVariableTable obj) {
if (ENABLE_LOCALS) {
if (staticMethod)
return;
LocalVariable[] vars = obj.getLocalVariableTable();
// System.out.println("Num params = " + numParms);
for (LocalVariable var : vars) {
if (var.getIndex() < numParms)
continue;
String varName = var.getName();
if (varName.equals("serialVersionUID"))
continue;
Field f = classFields.get(varName);
// System.out.println("Checking " + varName);
// System.out.println(" got " + f);
// TODO: we could distinguish between obscuring a field in the
// same class
// vs. obscuring a field in a superclass. Not sure how important
// that is.
if (f != null) {
FieldAnnotation fa = FieldAnnotation.fromBCELField(getDottedClassName(), f);
if (true || var.getStartPC() > 0)
bugReporter.reportBug(new BugInstance(this, "MF_METHOD_MASKS_FIELD", LOW_PRIORITY)
.addClassAndMethod(this).addField(fa).addSourceLine(this, var.getStartPC() - 1));
}
}
}
super.visit(obj);
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:32,代码来源:FindMaskedFields.java
示例11: pushByLocalObjectLoad
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
private void pushByLocalObjectLoad(DismantleBytecode dbc, int register) {
Method m = dbc.getMethod();
LocalVariableTable lvt = m.getLocalVariableTable();
if (lvt != null) {
LocalVariable lv = LVTHelper.getLocalVariableAtPC(lvt, register, dbc.getPC());
if (lv != null) {
String signature = lv.getSignature();
pushByLocalLoad(signature, register);
return;
}
}
pushByLocalLoad("Ljava/lang/Object;", register);
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:14,代码来源:OpcodeStack.java
示例12: checkLocalVariableName
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
* Get the name of given local variable (if possible) and store it in the
* HeuristicPropertySet.
*
* @param lvt
* the LocalVariableTable
* @param local
* index of the local
* @param pc
* program counter value of the instruction
*/
private void checkLocalVariableName(LocalVariableTable lvt, int local, int pc,
WarningPropertySet<DeadLocalStoreProperty> propertySet) {
if (lvt != null) {
LocalVariable lv = lvt.getLocalVariable(local, pc);
if (lv != null) {
String localName = lv.getName();
propertySet.setProperty(DeadLocalStoreProperty.LOCAL_NAME, localName);
}
}
}
开发者ID:OpenNTF,项目名称:FindBug-for-Domino-Designer,代码行数:23,代码来源:FindDeadLocalStores.java
示例13: getLocalVariableTable
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
* @return `LocalVariableTable' attribute of all the local variables of this method.
*/
public LocalVariableTable getLocalVariableTable( ConstantPoolGen cp ) {
LocalVariableGen[] lg = getLocalVariables();
int size = lg.length;
LocalVariable[] lv = new LocalVariable[size];
for (int i = 0; i < size; i++) {
lv[i] = lg[i].getLocalVariable(cp);
}
return new LocalVariableTable(cp.addUtf8("LocalVariableTable"), 2 + lv.length * 10, lv, cp
.getConstantPool());
}
开发者ID:Hu6,项目名称:VestaClient,代码行数:14,代码来源:MethodGen.java
示例14: visit
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visit(LocalVariableTable obj) {
visit((Attribute) obj);
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:4,代码来源:BetterVisitor.java
示例15: visitLocalVariableTable
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visitLocalVariableTable(LocalVariableTable obj) {
visit(obj);
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:4,代码来源:BetterVisitor.java
示例16: getMethod
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
* Get method object. Never forget to call setMaxStack() or setMaxStack(max), respectively,
* before calling this method (the same applies for max locals).
*
* @return method object
*/
public Method getMethod() {
String signature = getSignature();
int name_index = cp.addUtf8(name);
int signature_index = cp.addUtf8(signature);
/* Also updates positions of instructions, i.e., their indices
*/
byte[] byte_code = null;
if (il != null) {
byte_code = il.getByteCode();
}
LineNumberTable lnt = null;
LocalVariableTable lvt = null;
/* Create LocalVariableTable and LineNumberTable attributes (for debuggers, e.g.)
*/
if ((variable_vec.size() > 0) && !strip_attributes) {
addCodeAttribute(lvt = getLocalVariableTable(cp));
}
if ((line_number_vec.size() > 0) && !strip_attributes) {
addCodeAttribute(lnt = getLineNumberTable(cp));
}
Attribute[] code_attrs = getCodeAttributes();
/* Each attribute causes 6 additional header bytes
*/
int attrs_len = 0;
for (int i = 0; i < code_attrs.length; i++) {
attrs_len += (code_attrs[i].getLength() + 6);
}
CodeException[] c_exc = getCodeExceptions();
int exc_len = c_exc.length * 8; // Every entry takes 8 bytes
Code code = null;
if ((il != null) && !isAbstract() && !isNative()) {
// Remove any stale code attribute
Attribute[] attributes = getAttributes();
for (int i = 0; i < attributes.length; i++) {
Attribute a = attributes[i];
if (a instanceof Code) {
removeAttribute(a);
}
}
code = new Code(cp.addUtf8("Code"), 8 + byte_code.length + // prologue byte code
2 + exc_len + // exceptions
2 + attrs_len, // attributes
max_stack, max_locals, byte_code, c_exc, code_attrs, cp.getConstantPool());
addAttribute(code);
}
ExceptionTable et = null;
if (throws_vec.size() > 0) {
addAttribute(et = getExceptionTable(cp));
// Add `Exceptions' if there are "throws" clauses
}
Method m = new Method(access_flags, name_index, signature_index, getAttributes(), cp
.getConstantPool());
// Undo effects of adding attributes
if (lvt != null) {
removeCodeAttribute(lvt);
}
if (lnt != null) {
removeCodeAttribute(lnt);
}
if (code != null) {
removeAttribute(code);
}
if (et != null) {
removeAttribute(et);
}
return m;
}
开发者ID:Hu6,项目名称:VestaClient,代码行数:74,代码来源:MethodGen.java
示例17: visitLocalVariableTable
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visitLocalVariableTable(LocalVariableTable obj){//vmspec2 4.7.9
//In JustIce,this check is partially delayed to Pass 3a.
//The other part can be found in the visitCode(Code) method.
}
开发者ID:Hu6,项目名称:VestaClient,代码行数:5,代码来源:Pass2Verifier.java
示例18: visitLocalVariableTable
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visitLocalVariableTable(LocalVariableTable obj) {
tostring = "<LocalVariableTable: " + toString(obj) + ">";
}
开发者ID:Hu6,项目名称:VestaClient,代码行数:4,代码来源:StringRepresentation.java
示例19: visitLocalVariableTable
import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visitLocalVariableTable(LocalVariableTable aTable)
{
}
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:6,代码来源:UnreadVariableCheck.java
注:本文中的org.apache.bcel.classfile.LocalVariableTable类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论