org.apache.bcel.Constants |
Line |
mutable public array!! |
2420 |
org.apache.bcel.PLSETestCase |
Line |
need for real assertions here |
153 |
org.apache.bcel.classfile.AccessFlags |
Line |
not used externally at present |
32 |
org.apache.bcel.classfile.AnnotationEntry |
Line |
return List |
123 |
org.apache.bcel.classfile.Annotations |
Line |
Auto-generated method stub |
89 |
org.apache.bcel.classfile.Attribute |
Line |
make private (has getter & setter) |
249 |
org.apache.bcel.classfile.BootstrapMethod |
Line |
should this throw? |
90 |
org.apache.bcel.classfile.BootstrapMethods |
Line |
this could be made final (setter is not used) |
37 |
org.apache.bcel.classfile.Code |
Line |
this could be made final (setter is not used) |
62 |
this could be made final (setter is not used) |
63 |
org.apache.bcel.classfile.CodeException |
Line |
should this throw? |
129 |
unused |
192 |
unused |
199 |
org.apache.bcel.classfile.Constant |
Line |
should be private & final |
124 |
should this throw? |
155 |
org.apache.bcel.classfile.ConstantCP |
Line |
make private (has getter & setter) This field has the same meaning for all subclasses. |
44 |
make private (has getter & setter) |
51 |
org.apache.bcel.classfile.ConstantPool |
Line |
should this throw? |
221 |
org.apache.bcel.classfile.ConstantUtf8 |
Line |
these should perhaps be AtomicInt? |
85 |
org.apache.bcel.classfile.ElementValue |
Line |
isRuntimeVisible |
112 |
should be final |
137 |
should be final |
142 |
org.apache.bcel.classfile.InnerClass |
Line |
should this throw? |
88 |
unused |
151 |
unused |
158 |
org.apache.bcel.classfile.InnerClasses |
Line |
this could be recoded to use a lower level constructor after creating a copy of the inner classes |
100 |
org.apache.bcel.classfile.JavaClass |
Line |
Check if assignment compatibility is sufficient. What does Sun do? |
421 |
make protected? |
870 |
org.apache.bcel.classfile.LineNumber |
Line |
should this throw? |
87 |
org.apache.bcel.classfile.LineNumberTable |
Line |
could use the lower level constructor and thereby allow lineNumberTable to be made final |
99 |
org.apache.bcel.classfile.LocalVariable |
Line |
should this throw? |
136 |
unused |
229 |
unused |
243 |
unused |
250 |
unused |
257 |
org.apache.bcel.classfile.MethodParameter |
Line |
should this throw? |
71 |
org.apache.bcel.classfile.ModuleExports |
Line |
should this throw? |
78 |
org.apache.bcel.classfile.ModuleOpens |
Line |
should this throw? |
78 |
org.apache.bcel.classfile.ModuleProvides |
Line |
should this throw? |
80 |
org.apache.bcel.classfile.ModuleRequires |
Line |
should this throw? |
69 |
org.apache.bcel.classfile.ParameterAnnotationEntry |
Line |
isRuntimeVisible |
65 |
org.apache.bcel.classfile.StackMapEntry |
Line |
unused |
333 |
unused |
341 |
org.apache.bcel.classfile.StackMapType |
Line |
should this throw? |
90 |
org.apache.bcel.generic.BranchHandle |
Line |
could be package-protected? |
65 |
org.apache.bcel.generic.CPInstruction |
Line |
could be package-protected? |
107 |
org.apache.bcel.generic.ClassGen |
Line |
Sometime later, trash any attributes called 'RuntimeVisibleAnnotations' or 'RuntimeInvisibleAnnotations' |
344 |
could be package-protected - only called by test code |
490 |
could be package-protected - only called by test code |
510 |
org.apache.bcel.generic.CodeExceptionGen |
Line |
could be package-protected? |
123 |
could be package-protected? |
133 |
could be package-protected? |
143 |
org.apache.bcel.generic.ConstantPoolGen |
Line |
should this be handled somehow? } else if (c instanceof org.apache.bcel.classfile.ConstantMethodHandle) { |
202 |
should this be handled somehow? } else if (c instanceof org.apache.bcel.classfile.ConstantModule) { |
204 |
should this be handled somehow? } else if (c instanceof org.apache.bcel.classfile.ConstantPackage) { |
206 |
should this be handled somehow? } else { // Not helpful, should throw an exception. assert false : "Unexpected constant type: " + c.getClass().getName(); } |
208 |
org.apache.bcel.generic.ElementValueGen |
Line |
isRuntimeVisible ?????????? |
115 |
org.apache.bcel.generic.FieldAnnotationsTestCase |
Line |
L...;? |
66 |
org.apache.bcel.generic.FieldGenOrMethodGen |
Line |
could this be package protected? |
61 |
could be package-protected? |
158 |
could be package-protected? |
163 |
could be package-protected? |
168 |
org.apache.bcel.generic.GeneratingAnnotatedClassesTestCase |
Line |
L??; |
355 |
org.apache.bcel.generic.Instruction |
Line |
check range? |
557 |
org.apache.bcel.generic.InstructionHandle |
Line |
remove this method in any redesign of BCEL |
266 |
org.apache.bcel.generic.InstructionList |
Line |
could be package-protected? (some test code would need to be repackaged) |
1071 |
should this be an error? |
1134 |
org.apache.bcel.generic.JavaHome |
Line |
Apache Commons 2.14.0: Use FilesUncheck |
71 |
org.apache.bcel.generic.LDC |
Line |
useless check? |
69 |
org.apache.bcel.generic.LineNumberGen |
Line |
could be package-protected? |
82 |
could be package-protected? |
88 |
org.apache.bcel.generic.LocalVariableGen |
Line |
could be package-protected? |
180 |
could be package-protected? |
198 |
org.apache.bcel.generic.LocalVariableInstruction |
Line |
could be package-protected? |
165 |
org.apache.bcel.generic.MethodGen |
Line |
could be package-protected? |
1044 |
could be package-protected? |
1048 |
could be package-protected? (some tests would need repackaging) |
1055 |
could be package-protected? (some tests would need repackaging) |
1086 |
could be package-protected? |
1097 |
org.apache.bcel.generic.ReferenceType |
Line |
Above sounds a little arbitrary. On the other hand, there is no object referenced by {@link #NULL} so we can also say all the objects referenced by {@link #NULL} were derived from {@link Object}. However, the Java Language's "instanceof" operator proves us wrong: "null" is not referring to an instance of {@link Object} :) |
58 |
Is there a proof of {@link #OBJECT} being the direct ancestor of every ArrayType? |
65 |
Above sounds a little arbitrary. On the other hand, there is no object referenced by {@link #NULL} so we can also say all the objects referenced by {@link #NULL} were derived from {@link Object}. However, the Java Language's "instanceof" operator proves us wrong: "null" is not referring to an instance of {@link Object} :) |
89 |
Is there a proof of {@link #OBJECT} being the direct ancestor of every ArrayType? |
106 |
The above line is correct comparing to the vmspec2. But one could make class file verification a bit stronger here by using the notion of superinterfaces or even castability or assignment compatibility. |
115 |
Check if this is still valid or find a way to dynamically find out which interfaces arrays implement. However, as of the JVM specification edition 2, there are at least two different pages where assignment compatibility is defined and on one of them "interfaces implemented by arrays" is exchanged with "'Cloneable' or 'java.io.Serializable'" |
227 |
org.apache.bcel.generic.Select |
Line |
could be package-protected? |
289 |
org.apache.bcel.generic.Type |
Line |
should be final (and private) |
321 |
org.apache.bcel.util.BCELifierTestCase |
Line |
detect if JDK present and skip test if not |
178 |
org.apache.bcel.util.Class2HTMLTestCase |
Line |
assertions on generated HTML code |
50 |
org.apache.bcel.util.ClassQueue |
Line |
not used externally |
32 |
org.apache.bcel.verifier.statics.Pass1Verifier |
Line |
Maybe change Repository's behavior to throw a LoadingException instead of just returning "null" if a class file cannot be found or in another way be looked up. |
151 |
org.apache.bcel.verifier.statics.Pass2Verifier |
Line |
rework it. |
224 |
implement. Are there any restrictions? |
1174 |
org.apache.bcel.verifier.statics.Pass3aVerifier |
Line |
From time to time check if BCEL allows to detect if the 'count' operand is consistent with the information in the CONSTANT_InterfaceMethodref and if the last operand is zero. By now, BCEL hides those two operands because they're superfluous. |
453 |
Make this a binary search! The instructionPositions array is naturally ordered! |
920 |
--No comment-- |
1023 |
Check how BCEL handles (and will handle) instructions like IMPDEP1, IMPDEP2, BREAKPOINT... that BCEL knows about but which are illegal anyway. We currently go the safe way here. |
1101 |
see the do_verify() comments. Maybe we should really work on the byte array first to give more comprehensive messages. |
1144 |
Review Exception API, possibly build in some "offending instruction" thing when we're ready to insulate the offending instruction by doing the above thing. |
1146 |
Implement as much as possible here. BCEL does _not_ check everything. |
1150 |
org.apache.bcel.verifier.structurals.ControlFlowGraph |
Line |
implement caching! |
96 |
remove. Only JustIce must not use it, but foreign users of the ControlFlowGraph will want it. Thanks Johannes Wust. throw new AssertionViolatedException("DID YOU REALLY WANT TO ASK FOR RET'S SUCCS?"); |
109 |
Can be performance-improved. |
327 |
Put information in the brackets, e.g. Is this an ExceptionHandler? Is this a RET? Is this the start of a subroutine? |
352 |
org.apache.bcel.verifier.structurals.ExecutionVisitor |
Line |
could be package-protected? |
91 |
could be package-protected? |
101 |
One could use a sophisticated analysis here to check if a type cannot possibly be cated to another and by so doing predict the ClassCastException at run-time. |
233 |
org.apache.bcel.verifier.structurals.InstConstraintVisitor |
Line |
could be package-protected? |
150 |
could be package-protected? |
161 |
This can possibly only be checked using Staerk-et-al's "set-of-object types", not using "wider cast object types" created during verification. Comment it out if you encounter problems. See also the analogon at visitPUTFIELD|visitPUTSTATIC. |
936 |
One day move to Staerk-et-al's "Set of object types" instead of "wider" object types created during the verification. "Wider" object types don't allow us to check for things like that below. constraintViolated(o, "The referenced field has the ACC_PROTECTED modifier, "+ "and it's a member of the current class or a superclass of the current class."+ " However, the referenced object type '"+stack().peek()+ "' is not the current class or a subclass of the current class."); } |
1063 |
Could go into Pass 3a. |
1074 |
--No comment-- |
1547 |
Do we want to do anything with it? ConstantInterfaceMethodref cimr = (ConstantInterfaceMethodref) (cpg.getConstant(o.getIndex())); |
1562 |
This can only be checked when using Staerk-et-al's "set of object types" instead of a "wider cast object type" created during verification. if ( ! rFromStack.isAssignmentCompatibleWith(rFromDesc) ) { constraintViolated(o, "Expecting a '"+fromDesc+"' but found a '"+fromStack+ "' on the stack (which is not assignment compatible)."); } |
1590 |
This can only be checked if we're using Staerk-et-al's "set of object types" instead of "wider cast object types" generated during verification. if ( ! Repository.implementationOf(objRefClassName, theInterface) ) { constraintViolated(o, "The 'objRef' item '" + objRef + "' does not implement '" + theInterface + "' as expected."); } |
1621 |
This can possibly only be checked when using Staerk-et-al's "set of object types" instead of a single "wider cast object type" created during verification. |
1660 |
Could go into Pass 3a. |
2444 |
This can only be checked if using Staerk-et-al's "set of object types" instead of a "wider cast object type" created during verification. if (! (objectref.isAssignmentCompatibleWith(mg.getType())) ) { constraintViolated(o, "Type on stack top which should be returned is a '"+stack().peek()+ "' which is not assignment compatible with the return type of this method, '"+mg.getType()+"'."); } |
2521 |
org.apache.bcel.verifier.structurals.LocalVariables |
Line |
if ((locals[i] instanceof org.apache.bcel.generic.ReturnaddressType) && (lv.locals[i] instanceof org.apache.bcel.generic.ReturnaddressType)) { //System.err.println("merging "+locals[i]+" and "+lv.locals[i]); throw new AssertionViolatedException("Merging different ReturnAddresses: '"+locals[i]+"' and '"+lv.locals[i]+"'."); } |
174 |
could be package-protected? |
192 |
org.apache.bcel.verifier.structurals.Pass3bVerifier |
Line |
Throughout pass 3b, upper halves of LONG and DOUBLE are represented by Type.UNKNOWN. This should be changed in favour of LONG_Upper and DOUBLE_Upper as in pass 2. |
57 |
the "oldchain" and "newchain" is used to determine the subroutine we're in (by searching for the last JSR) by the InstructionContext implementation. Therefore, we should not use this chain mechanism when dealing with exception handlers. Example: a JSR with an exception handler as its successor does not mean we're in a subroutine if we go to the exception handler. We should address this problem later; by now we simply "cut" the chain by using an empty chain for the exception handlers. if (v.execute(new Frame(u.getOutFrame(oldchain).getLocals(), new OperandStack (u.getOutFrame().getStack().maxStack(), (exc_hds[s].getExceptionType() == null ? Type.THROWABLE : exc_hds[s].getExceptionType())) ), newchain), icv, ev) { icq.add(v, (ArrayList) newchain.clone()); |
249 |
This is buggy, we check only the top-level return instructions this way. Maybe some maniac returns from a method when in a subroutine? |
273 |
org.apache.bcel.verifier.structurals.Subroutines |
Line |
refer to the paper. |
54 |
Implement caching. |
145 |
can this be made private? CHECKSTYLE:ON |
397 |
org.apache.bcel.verifier.tests.TestArrayAccess02Creator |
Line |
why is this not used |
62 |
why is this not used |
65 |
why is this not used |
78 |
why is this not used |
82 |
why is this not used |
86 |
why is this not used |
93 |
org.apache.bcel.verifier.tests.TestArrayAccess03Creator |
Line |
why is this not used |
62 |
why is this not used |
65 |
why is this not used |
78 |
why is this not used |
82 |
why is this not used |
89 |
org.apache.bcel.verifier.tests.TestArrayAccess04Creator |
Line |
why is this not used |
66 |
why is this not used |
69 |
why is this not used |
82 |
why is this not used |
86 |
why is this not used |
89 |
why is this not used |
94 |
org.apache.bcel.verifier.tests.TestReturn01Creator |
Line |
why is this not used |
58 |
why is this not used |
61 |
why is this not used |
74 |
why is this not used |
79 |
org.apache.bcel.verifier.tests.TestReturn03Creator |
Line |
why is this not used |
64 |
why is this not used |
67 |
why is this not used |
80 |
org.apache.bcel.visitors.CountingVisitor |
Line |
Auto-generated method stub |
299 |
Auto-generated method stub |
310 |
Auto-generated method stub |
489 |