Syntax patterns: more statistics.

Ruslan Shevchenko Ruslan at Shevchenko.Kiev.UA
Mon Apr 20 07:58:58 PDT 2009


Good day, community !

 I want to share some statistics about java usage patterns, related to
some of coin-dev proposals.

Main changes from previous post are:
  - added counts for 'if' syntax constructions, so we can say, hom many
 percents of if's can be eliminated by elvis operator ( [4-5]%)
  - added counts for 'catch' syntax constructions, so we can say that
multicath eliminate 6-8% of all catch clauses.
  - added count for big integers integers (where undescore can be
applicable, I guess this is x: x > 100000 || x < -10000) and for all
integer literals.
   (underscore can be applicable to near 1%)
  - added count for object-switch proposal by Ulf Zibis (refining, that
Left/Right part of expressions are first operand in equalirty expression
or object in method call)
  - added count for rethrow proposal by Mark Mahieu (near 50% of all
catches in some packages (!) ).
  - added count for catches inside finally block. (Is this is a real
problem [?]).

If anybody whant run checks on own dataset or/and add own check
definitions: all  procedure is the same as in my previous letter (see
http://mail.openjdk.java.net/pipermail/coin-dev/2009-April/001442.html)
except URL for last version
 is
http://datacenter.gradsoft.ua/public.repository/ua.gradsoft/javachecker/installations/JavaCheckerSourceInstaller-2.5.0p1.jar

Now summary statistics for some well-known packages:
jetty (web server)
all catchs      :       281
all ifs :       764
all integer literals    :       2903
big integer literals(undescores)        :       25
byte literal    :       52
catch in finally        :       3
elvis   :       43
instanceof switch       :       8
loop with remove        :       0
multi catch     :       22
object switch   :       31
rethrow clause  :       34
string in switch        :       19
Files:187

gwt-users (google java ajax client library)
all catchs      :       171
all ifs :       735
all integer literals    :       2282
big integer literals(undescores)        :       24
byte literal    :       2
catch in finally        :       2
elvis   :       30
instanceof switch       :       6
loop with remove        :       5
multi catch     :       9
object switch   :       27
rethrow clause  :       84
string in switch        :       10
Files:920

hibernate (ORM toolkit)
all catchs      :       650
all ifs :       2410
all integer literals    :       3240
big integer literals(undescores)        :       12
byte literal    :       1
catch in finally        :       27
elvis   :       182
instanceof switch       :       28
loop with remove        :       12
multi catch     :       25
object switch   :       94
rethrow clause  :       450
string in switch        :       86
Files:1372

openjdk7 (standard java library)
all catchs      :       8404
all ifs :       28494
all integer literals    :       124356
big integer literals(undescores)        :       4066
byte literal    :       1454
catch in finally        :       103
elvis   :       877
instanceof switch       :       318
loop with remove        :       62
multi catch     :       411
object switch   :       1363
rethrow clause  :       3264
string in switch        :       445
Files:9252

Hope, this data will be useful in some cases.
Regards !





More information about the coin-dev mailing list