more syntax patterns[ v5]
Tim Lebedkov
tim.lebedkov at googlemail.com
Mon May 18 13:06:01 PDT 2009
Hello Ruslan,
once again thank you for the great work.
Regards
--Tim
On Mon, May 18, 2009 at 3:45 PM, Ruslan Shevchenko <rssh at gradsoft.com.ua> wrote:
> Good day.
>
> Next set of syntax patterns for count of LOCs, affected by coin possible
> optimizations with results is available.
>
> main changes from previous set are:
>
> - added count for using collection indexes. (I. e. number of LOCs,
> probably will be optimized after implementing index array access)
> (pattern named 'simplicified collection element access', for review see
> lines from 313 to 353 of checkers_coin.def [
> http://redmine.gradsoft.ua/repositories/entry/javachecker/trunk/JavaChecker/etc/checkers_coin.def
> ])
>
> - added count for using simplicified string builder/buffer append
> (pattern named 'simplicified StringBuilder/Buffer syntax', lines 285-311)
>
> - added count for variable declarators with initializers.
> ('all variable initializers', lines 355-363)
>
> - added count for variable initializers, applicable for proposal: Type
> inference for variable definition/initialization using the 'auto' keyword.
> ('initializers with type arguments or long type names', lines 365-415)
>
> - added count for variable initalizers, applicable for 'diamond' proposal
> [i.e. calls of counstructor with type parameters]
> ('initializers with allocation and type arguments', lines 417-468)
>
> //in short - auto proposal for type inheritance is a clean winner.
>
> - integrated counters for traditional for loops, which not only applicable
> to 'Enhanced for each loop iteration control', but can also be transformed
> to java5 foreach loop. (file etc/checkers_coin_loop.def)
>
> - removed incorrect counters for elvis proposal (see summary of elvis1 and
> nullsafe call of fields and methods instead)
>
> - removed counters for syntax bit-and with 0xFF
>
> - added 'Compiere ERP' for set of analyzed sources.
> // And yes, exception catching is differ from frameworks exactly as in
> Stephen Colebourne measurements for e-commerce system (see
> http://mail.openjdk.java.net/pipermail/coin-dev/2009-April/001597.html)
>
> Results are:
>
> openjdk-jdk:
> all bit ands : 6814
> all conditional expressions : 6770
> all catchs : 8411
> all ifs : 28442
> all integer literals : 120613
> all traditional fors : 11530
> all variable initializers : 139836
> initializers with type arguments or long type names : 40211
> big integer literals(undescores) : 4589
> byte literal : 1452
> catch in finally : 103
> simplicified collection element access : 5438
> initializers with allocation and type arguments : 1499
> elvis1 : 437
> for loop (length),convertable to foreach : 1515
> for loop (size),convertable to foreach : 158
> for loop from 0 to size or length : 3137
> for with limit like it.next() : 235
> instanceof switch : 317
> loop with remove : 94
> multi catch : 412
> nullsafe call of fields and methods : 384
> object switch : 1360
> rethrow clause : 3267
> simplicified StringBuilder/Buffer syntax : 5142
> string in switch : 444
> widening operator (semantics) : 1090
> Files:9278
>
> Compiere ERP:
> all bit ands : 17
> all conditional expressions : 435
> all catchs : 2251
> all ifs : 6158
> all integer literals : 22482
> all traditional fors : 719
> all variable initializers : 31027
> initializers with type arguments or long type names : 9990
> big integer literals(undescores) : 1422
> byte literal : 1
> catch in finally : 82
> simplicified collection element access : 732
> initializers with allocation and type arguments : 708
> elvis1 : 36
> for loop (length),convertable to foreach : 130
> for loop (size),convertable to foreach : 136
> for loop from 0 to size or length : 476
> for with limit like it.next() : 2
> instanceof switch : 31
> loop with remove : 4
> multi catch : 7
> nullsafe call of fields and methods : 31
> object switch : 257
> rethrow clause : 46
> simplicified StringBuilder/Buffer syntax : 4635
> string in switch : 215
> widening operator (semantics) : 1
> Files:2110
>
> jetty:
> all bit ands : 121
> all conditional expressions : 277
> all catchs : 281
> all ifs : 764
> all integer literals : 2903
> all traditional fors : 315
> all variable initializers : 3687
> initializers with type arguments or long type names : 837
> big integer literals(undescores) : 25
> byte literal : 52
> catch in finally : 3
> simplicified collection element access : 241
> initializers with allocation and type arguments : 0
> elvis1 : 33
> for loop (length),convertable to foreach : 63
> for loop (size),convertable to foreach : 16
> for loop from 0 to size or length : 100
> for with limit like it.next() : 4
> instanceof switch : 8
> invalid checker comments : 0
> loop with remove : 0
> multi catch : 22
> nullsafe call of fields and methods : 35
> object switch : 31
> rethrow clause : 34
> simplicified StringBuilder/Buffer syntax : 363
> string in switch : 19
> widening operator (semantics) : 10
> Files:187
>
> gwt-user:
> all bit ands : 58
> all conditional expressions : 208
> all catchs : 171
> all ifs : 735
> all integer literals : 2282
> all traditional fors : 271
> all variable initializers : 4208
> initializers with type arguments or long type names : 1673
> big integer literals(undescores) : 24
> byte literal : 2
> catch in finally : 2
> simplicified collection element access : 324
> initializers with allocation and type arguments : 252
> elvis1 : 18
> for loop (length),convertable to foreach : 24
> for loop (size),convertable to foreach : 5
> for loop from 0 to size or length : 71
> for with limit like it.next() : 20
> instanceof switch : 6
> loop with remove : 7
> multi catch : 9
> nullsafe call of fields and methods : 10
> object switch : 27
> rethrow clause : 84
> simplicified StringBuilder/Buffer syntax : 216
> string in switch : 10
> widening operator (semantics) : 0
> Files:920
>
> Hibernate:
> all bit ands : 2
> all conditional expressions : 792
> all catchs : 650
> all ifs : 2410
> all integer literals : 3240
> all traditional fors : 708
> all variable initializers : 10271
> initializers with type arguments or long type names : 4013
> big integer literals(undescores) : 12
> byte literal : 1
> catch in finally : 27
> simplicified collection element access : 613
> initializers with allocation and type arguments : 100
> elvis1 : 77
> for loop (length),convertable to foreach : 177
> for loop (size),convertable to foreach : 17
> for loop from 0 to size or length : 385
> for with limit like it.next() : 16
> instanceof switch : 28
> loop with remove : 12
> multi catch : 25
> nullsafe call of fields and methods : 116
> object switch : 94
> rethrow clause : 450
> simplicified StringBuilder/Buffer syntax : 1128
> string in switch : 86
> widening operator (semantics) : 0
> Files:1372
>
> If you want run checker on own codeset or play with patterns, it can be
> download as
> http://datacenter.gradsoft.ua/public.repository/ua.gradsoft/javachecker/installations/JavaCheckerBinaryInstaller-2.5.0p5.jar
>
> How to run: see instructions at the end of the first letter:
> http://mail.openjdk.java.net/pipermail/coin-dev/2009-April/001442.html
>
> Hope, this information will be useful.
> Regards !
>
>
>
>
More information about the coin-dev
mailing list