1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 19 package org.apache.bcel.visitors; 20 21 import org.apache.bcel.classfile.AnnotationDefault; 22 import org.apache.bcel.classfile.AnnotationEntry; 23 import org.apache.bcel.classfile.Annotations; 24 import org.apache.bcel.classfile.BootstrapMethods; 25 import org.apache.bcel.classfile.Code; 26 import org.apache.bcel.classfile.CodeException; 27 import org.apache.bcel.classfile.ConstantClass; 28 import org.apache.bcel.classfile.ConstantDouble; 29 import org.apache.bcel.classfile.ConstantDynamic; 30 import org.apache.bcel.classfile.ConstantFieldref; 31 import org.apache.bcel.classfile.ConstantFloat; 32 import org.apache.bcel.classfile.ConstantInteger; 33 import org.apache.bcel.classfile.ConstantInterfaceMethodref; 34 import org.apache.bcel.classfile.ConstantInvokeDynamic; 35 import org.apache.bcel.classfile.ConstantLong; 36 import org.apache.bcel.classfile.ConstantMethodHandle; 37 import org.apache.bcel.classfile.ConstantMethodType; 38 import org.apache.bcel.classfile.ConstantMethodref; 39 import org.apache.bcel.classfile.ConstantModule; 40 import org.apache.bcel.classfile.ConstantNameAndType; 41 import org.apache.bcel.classfile.ConstantPackage; 42 import org.apache.bcel.classfile.ConstantPool; 43 import org.apache.bcel.classfile.ConstantString; 44 import org.apache.bcel.classfile.ConstantUtf8; 45 import org.apache.bcel.classfile.ConstantValue; 46 import org.apache.bcel.classfile.Deprecated; 47 import org.apache.bcel.classfile.EnclosingMethod; 48 import org.apache.bcel.classfile.ExceptionTable; 49 import org.apache.bcel.classfile.Field; 50 import org.apache.bcel.classfile.InnerClass; 51 import org.apache.bcel.classfile.InnerClasses; 52 import org.apache.bcel.classfile.JavaClass; 53 import org.apache.bcel.classfile.LineNumber; 54 import org.apache.bcel.classfile.LineNumberTable; 55 import org.apache.bcel.classfile.LocalVariable; 56 import org.apache.bcel.classfile.LocalVariableTable; 57 import org.apache.bcel.classfile.LocalVariableTypeTable; 58 import org.apache.bcel.classfile.Method; 59 import org.apache.bcel.classfile.MethodParameters; 60 import org.apache.bcel.classfile.ParameterAnnotationEntry; 61 import org.apache.bcel.classfile.ParameterAnnotations; 62 import org.apache.bcel.classfile.Signature; 63 import org.apache.bcel.classfile.SourceFile; 64 import org.apache.bcel.classfile.StackMap; 65 import org.apache.bcel.classfile.StackMapEntry; 66 import org.apache.bcel.classfile.Synthetic; 67 import org.apache.bcel.classfile.Unknown; 68 import org.apache.bcel.classfile.Visitor; 69 70 public class CounterVisitor implements Visitor 71 { 72 // CHECKSTYLE:OFF (public mutable fields in test code) 73 public int unknownCount = 0; 74 75 public int syntheticCount = 0; 76 77 public int stackMapEntryCount = 0; 78 79 public int stackMapCount = 0; 80 81 public int sourceFileCount = 0; 82 83 public int signatureAnnotationCount = 0; 84 85 public int parameterAnnotationCount = 0; 86 87 public int methodCount = 0; 88 89 public int localVariableTypeTableCount = 0; 90 91 public int localVariableTableCount = 0; 92 93 public int localVariableCount = 0; 94 95 public int lineNumberTableCount = 0; 96 97 public int lineNumberCount = 0; 98 99 public int javaClassCount = 0; 100 101 public int innerClassesCount = 0; 102 103 public int innerClassCount = 0; 104 105 public int fieldCount = 0; 106 107 public int exceptionTableCount = 0; 108 109 public int enclosingMethodCount = 0; 110 111 public int deprecatedCount = 0; 112 113 public int constantValueCount = 0; 114 115 public int constantUtf8Count = 0; 116 117 public int constantStringCount = 0; 118 119 public int constantNameAndTypeCount = 0; 120 121 public int constantPoolCount = 0; 122 123 public int constantMethodrefCount = 0; 124 125 public int constantLongCount = 0; 126 127 public int constantIntegerCount = 0; 128 129 public int constantInterfaceMethodrefCount = 0; 130 131 public int constantFloatCount = 0; 132 133 public int constantFieldrefCount = 0; 134 135 public int constantClassCount = 0; 136 137 public int constantDoubleCount = 0; 138 139 public int codeExceptionCount = 0; 140 141 public int codeCount = 0; 142 143 public int annotationEntryCount = 0; 144 145 public int annotationDefaultCount = 0; 146 147 public int annotationCount = 0; 148 149 /** @since 6.0 */ 150 public int bootstrapMethodsCount = 0; 151 152 /** @since 6.0 */ 153 public int methodParametersCount = 0; 154 155 /** @since 6.0 */ 156 public int constantInvokeDynamic = 0; 157 158 /** @since 6.1 */ 159 public int constantModuleCount = 0; 160 161 /** @since 6.1 */ 162 public int constantPackageCount = 0; 163 164 /** @since 6.3 */ 165 public int constantDynamicCount = 0; 166 // CHECKSTYLE:ON 167 168 169 @Override visitAnnotation(final Annotations obj)170 public void visitAnnotation(final Annotations obj) 171 { 172 annotationCount++; 173 } 174 175 @Override visitAnnotationDefault(final AnnotationDefault obj)176 public void visitAnnotationDefault(final AnnotationDefault obj) 177 { 178 annotationDefaultCount++; 179 } 180 181 @Override visitAnnotationEntry(final AnnotationEntry obj)182 public void visitAnnotationEntry(final AnnotationEntry obj) 183 { 184 annotationEntryCount++; 185 } 186 187 @Override visitCode(final Code obj)188 public void visitCode(final Code obj) 189 { 190 codeCount++; 191 } 192 193 @Override visitCodeException(final CodeException obj)194 public void visitCodeException(final CodeException obj) 195 { 196 codeExceptionCount++; 197 } 198 199 @Override visitConstantClass(final ConstantClass obj)200 public void visitConstantClass(final ConstantClass obj) 201 { 202 constantClassCount++; 203 } 204 205 @Override visitConstantDouble(final ConstantDouble obj)206 public void visitConstantDouble(final ConstantDouble obj) 207 { 208 constantDoubleCount++; 209 } 210 211 @Override visitConstantFieldref(final ConstantFieldref obj)212 public void visitConstantFieldref(final ConstantFieldref obj) 213 { 214 constantFieldrefCount++; 215 } 216 217 @Override visitConstantFloat(final ConstantFloat obj)218 public void visitConstantFloat(final ConstantFloat obj) 219 { 220 constantFloatCount++; 221 } 222 223 @Override visitConstantInteger(final ConstantInteger obj)224 public void visitConstantInteger(final ConstantInteger obj) 225 { 226 constantIntegerCount++; 227 } 228 229 @Override visitConstantInterfaceMethodref(final ConstantInterfaceMethodref obj)230 public void visitConstantInterfaceMethodref(final ConstantInterfaceMethodref obj) 231 { 232 constantInterfaceMethodrefCount++; 233 } 234 235 @Override visitConstantLong(final ConstantLong obj)236 public void visitConstantLong(final ConstantLong obj) 237 { 238 constantLongCount++; 239 } 240 241 @Override visitConstantMethodref(final ConstantMethodref obj)242 public void visitConstantMethodref(final ConstantMethodref obj) 243 { 244 constantMethodrefCount++; 245 } 246 247 @Override visitConstantNameAndType(final ConstantNameAndType obj)248 public void visitConstantNameAndType(final ConstantNameAndType obj) 249 { 250 constantNameAndTypeCount++; 251 } 252 253 @Override visitConstantPool(final ConstantPool obj)254 public void visitConstantPool(final ConstantPool obj) 255 { 256 constantPoolCount++; 257 } 258 259 @Override visitConstantString(final ConstantString obj)260 public void visitConstantString(final ConstantString obj) 261 { 262 constantStringCount++; 263 } 264 265 @Override visitConstantUtf8(final ConstantUtf8 obj)266 public void visitConstantUtf8(final ConstantUtf8 obj) 267 { 268 constantUtf8Count++; 269 } 270 271 @Override visitConstantValue(final ConstantValue obj)272 public void visitConstantValue(final ConstantValue obj) 273 { 274 constantValueCount++; 275 } 276 277 @Override visitDeprecated(final Deprecated obj)278 public void visitDeprecated(final Deprecated obj) 279 { 280 deprecatedCount++; 281 } 282 283 @Override visitEnclosingMethod(final EnclosingMethod obj)284 public void visitEnclosingMethod(final EnclosingMethod obj) 285 { 286 enclosingMethodCount++; 287 } 288 289 @Override visitExceptionTable(final ExceptionTable obj)290 public void visitExceptionTable(final ExceptionTable obj) 291 { 292 exceptionTableCount++; 293 } 294 295 @Override visitField(final Field obj)296 public void visitField(final Field obj) 297 { 298 fieldCount++; 299 } 300 301 @Override visitInnerClass(final InnerClass obj)302 public void visitInnerClass(final InnerClass obj) 303 { 304 innerClassCount++; 305 } 306 307 @Override visitInnerClasses(final InnerClasses obj)308 public void visitInnerClasses(final InnerClasses obj) 309 { 310 innerClassesCount++; 311 } 312 313 @Override visitJavaClass(final JavaClass obj)314 public void visitJavaClass(final JavaClass obj) 315 { 316 javaClassCount++; 317 } 318 319 @Override visitLineNumber(final LineNumber obj)320 public void visitLineNumber(final LineNumber obj) 321 { 322 lineNumberCount++; 323 } 324 325 @Override visitLineNumberTable(final LineNumberTable obj)326 public void visitLineNumberTable(final LineNumberTable obj) 327 { 328 lineNumberTableCount++; 329 } 330 331 @Override visitLocalVariable(final LocalVariable obj)332 public void visitLocalVariable(final LocalVariable obj) 333 { 334 localVariableCount++; 335 } 336 337 @Override visitLocalVariableTable(final LocalVariableTable obj)338 public void visitLocalVariableTable(final LocalVariableTable obj) 339 { 340 localVariableTableCount++; 341 } 342 343 @Override visitLocalVariableTypeTable(final LocalVariableTypeTable obj)344 public void visitLocalVariableTypeTable(final LocalVariableTypeTable obj) 345 { 346 localVariableTypeTableCount++; 347 } 348 349 @Override visitMethod(final Method obj)350 public void visitMethod(final Method obj) 351 { 352 methodCount++; 353 } 354 355 @Override visitParameterAnnotation(final ParameterAnnotations obj)356 public void visitParameterAnnotation(final ParameterAnnotations obj) 357 { 358 parameterAnnotationCount++; 359 } 360 361 @Override visitSignature(final Signature obj)362 public void visitSignature(final Signature obj) 363 { 364 signatureAnnotationCount++; 365 } 366 367 @Override visitSourceFile(final SourceFile obj)368 public void visitSourceFile(final SourceFile obj) 369 { 370 sourceFileCount++; 371 } 372 373 @Override visitStackMap(final StackMap obj)374 public void visitStackMap(final StackMap obj) 375 { 376 stackMapCount++; 377 } 378 379 @Override visitStackMapEntry(final StackMapEntry obj)380 public void visitStackMapEntry(final StackMapEntry obj) 381 { 382 stackMapEntryCount++; 383 } 384 385 @Override visitSynthetic(final Synthetic obj)386 public void visitSynthetic(final Synthetic obj) 387 { 388 syntheticCount++; 389 } 390 391 @Override visitUnknown(final Unknown obj)392 public void visitUnknown(final Unknown obj) 393 { 394 unknownCount++; 395 } 396 397 /** @since 6.0 */ 398 @Override visitBootstrapMethods(final BootstrapMethods obj)399 public void visitBootstrapMethods(final BootstrapMethods obj) 400 { 401 bootstrapMethodsCount++; 402 } 403 404 /** @since 6.0 */ 405 @Override visitMethodParameters(final MethodParameters obj)406 public void visitMethodParameters(final MethodParameters obj) 407 { 408 methodParametersCount++; 409 } 410 411 /** @since 6.0 */ 412 @Override visitConstantInvokeDynamic(final ConstantInvokeDynamic obj)413 public void visitConstantInvokeDynamic(final ConstantInvokeDynamic obj) 414 { 415 constantInvokeDynamic++; 416 } 417 418 /** @since 6.0 */ 419 @Override visitConstantMethodType(final ConstantMethodType obj)420 public void visitConstantMethodType(final ConstantMethodType obj) { 421 // TODO Auto-generated method stub 422 } 423 424 /** @since 6.0 */ 425 @Override visitConstantMethodHandle(final ConstantMethodHandle constantMethodHandle)426 public void visitConstantMethodHandle(final ConstantMethodHandle constantMethodHandle) { 427 // TODO Auto-generated method stub 428 } 429 430 /** @since 6.0 */ 431 @Override visitParameterAnnotationEntry(final ParameterAnnotationEntry parameterAnnotationEntry)432 public void visitParameterAnnotationEntry(final ParameterAnnotationEntry parameterAnnotationEntry) { 433 // TODO Auto-generated method stub 434 } 435 436 /** @since 6.1 */ 437 @Override visitConstantPackage(final ConstantPackage constantPackage)438 public void visitConstantPackage(final ConstantPackage constantPackage) { 439 constantPackageCount++; 440 } 441 442 /** @since 6.1 */ 443 @Override visitConstantModule(final ConstantModule constantModule)444 public void visitConstantModule(final ConstantModule constantModule) { 445 constantModuleCount++; 446 } 447 448 /** @since 6.3 */ 449 @Override visitConstantDynamic(final ConstantDynamic constantDynamic)450 public void visitConstantDynamic(final ConstantDynamic constantDynamic) { 451 constantDynamicCount++; 452 } 453 } 454