[racket-dev] code base metrics

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Wed Dec 1 22:40:31 EST 2010

Thanks. When I re-run my 'averaging' I get around 34% exports.  

BTW, your script is broken. Look for "view: name"



On Dec 1, 2010, at 4:36 PM, Jon Rafkind wrote:

> And because I already started it, here is the entire collects tree (370k
> file)
> 
> http://www.cs.utah.edu/~rafkind/tmp/racket-definitions.txt
> 
> On 11/29/2010 03:34 PM, Matthias Felleisen wrote:
>> That makes sense. For now, I am fine with this very first-order approximation. Thanks 
>> 
>> 
>> On Nov 29, 2010, at 5:32 PM, Jon Rafkind wrote:
>> 
>>> There is one thing defined at phase 0, module-begin. The module exports
>>> a bunch of stuff
>>> 
>>> (provide (rename-out [module-begin #%module-begin])
>>>        (except-out (all-from-out scheme/base) #%module-begin)
>>>        (all-from-out scheme/unit)
>>>        (all-from-out scheme/contract)
>>>        (for-syntax (all-from-out scheme/base)))
>>> 
>>> I realize you probably wanted something like 'only count exports of
>>> things defined in the module' but thats a little harder to compute,
>>> which is why the metric is a first approximation.
>>> 
>>> On 11/29/2010 03:29 PM, Matthias Felleisen wrote:
>>>> Thanks, that's great. But what does this mean: 
>>>> 
>>>> "collects/racket/signature/lang.rkt defined 1 exported 2747"
>>>> 
>>>> -- Matthias
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Nov 29, 2010, at 4:24 PM, Jon Rafkind wrote:
>>>> 
>>>>> On 11/29/2010 12:20 PM, Jon Rafkind wrote:
>>>>>> I hacked my old tool to get a first approximation and ran it on all the
>>>>>> files of the collects/racket tree. I can run it on the entire collects
>>>>>> tree if you want, but its sort of slow so it will take a while. I
>>>>>> couldn't expand all the files because local requires failed, I'll try to
>>>>>> fix that.
>>>>> Here is a better list
>>>>> 
>>>>> collects/racket/file.rkt defined 29 exported 18
>>>>> collects/racket/include.rkt defined 5 exported 4
>>>>> collects/racket/set.rkt defined 32 exported 26
>>>>> collects/racket/gui/info.rkt defined 3 exported 2
>>>>> collects/racket/gui/init.rkt defined 0 exported 3354
>>>>> collects/racket/gui/base.rkt defined 4 exported 209
>>>>> collects/racket/gui/lang/reader.rkt defined 6 exported 3
>>>>> collects/racket/gui/dynamic.rkt defined 5 exported 2
>>>>> collects/racket/gui/installer.rkt defined 1 exported 1
>>>>> collects/racket/match/define-forms.rkt defined 1 exported 1
>>>>> collects/racket/match/compiler.rkt defined 13 exported 1
>>>>> collects/racket/match/struct.rkt defined 1 exported 1
>>>>> collects/racket/match/runtime.rkt defined 11 exported 6
>>>>> collects/racket/match/gen-match.rkt defined 3 exported 2
>>>>> collects/racket/match/patterns.rkt defined 194 exported 163
>>>>> collects/racket/match/reorder.rkt defined 11 exported 1
>>>>> collects/racket/match/parse-legacy.rkt defined 1 exported 1
>>>>> collects/racket/match/parse.rkt defined 2 exported 1
>>>>> collects/racket/match/parse-helper.rkt defined 15 exported 11
>>>>> collects/racket/match/parse-quasi.rkt defined 3 exported 1
>>>>> collects/racket/match/legacy-match.rkt defined 11 exported 15
>>>>> collects/racket/match/match-expander.rkt defined 1 exported 1
>>>>> collects/racket/match/match.rkt defined 11 exported 16
>>>>> collects/racket/match/split-rows.rkt defined 2 exported 1
>>>>> collects/racket/system.rkt defined 0 exported 8
>>>>> collects/racket/control.rkt defined 0 exported 24
>>>>> collects/racket/package.rkt defined 10 exported 11
>>>>> collects/racket/runtime-path.rkt defined 2 exported 7
>>>>> collects/racket/tcp.rkt defined 1 exported 12
>>>>> collects/racket/runtime-config.rkt defined 1 exported 1
>>>>> collects/racket/init.rkt defined 0 exported 3206
>>>>> collects/racket/serialize.rkt defined 5 exported 12
>>>>> collects/racket/surrogate.rkt defined 1 exported 1
>>>>> collects/racket/cmdline.rkt defined 5 exported 2
>>>>> collects/racket/splicing.rkt defined 15 exported 11
>>>>> collects/racket/provide-syntax.rkt defined 1 exported 1
>>>>> collects/racket/require-transform.rkt defined 30 exported 22
>>>>> collects/racket/load/lang/reader.rkt defined 6 exported 3
>>>>> collects/racket/stream.rkt defined 19 exported 17
>>>>> collects/racket/contract/regions.rkt defined 5 exported 3
>>>>> collects/racket/contract/private/object.rkt defined 15 exported 6
>>>>> collects/racket/contract/private/arrow.rkt defined 104 exported 17
>>>>> collects/racket/contract/private/ds.rkt defined 45 exported 9
>>>>> collects/racket/contract/private/guts.rkt defined 95 exported 69
>>>>> collects/racket/contract/private/misc.rkt defined 121 exported 28
>>>>> collects/racket/contract/private/provide.rkt defined 4 exported 2
>>>>> collects/racket/contract/private/base.rkt defined 5 exported 3
>>>>> collects/racket/contract/private/hash.rkt defined 22 exported 1
>>>>> collects/racket/contract/private/vector.rkt defined 52 exported 4
>>>>> collects/racket/contract/private/helpers.rkt defined 12 exported 9
>>>>> collects/racket/contract/private/basic-opters.rkt defined 0 exported 0
>>>>> collects/racket/contract/private/arr-i.rkt defined 26 exported 1
>>>>> collects/racket/contract/private/opt-guts.rkt defined 40 exported 31
>>>>> collects/racket/contract/private/legacy.rkt defined 22 exported 18
>>>>> collects/racket/contract/private/arr-util.rkt defined 2 exported 2
>>>>> collects/racket/contract/private/box.rkt defined 26 exported 2
>>>>> collects/racket/contract/private/prop.rkt defined 72 exported 19
>>>>> collects/racket/contract/private/opt.rkt defined 20 exported 6
>>>>> collects/racket/contract/private/arr-i-old.rkt defined 22 exported 1
>>>>> collects/racket/contract/private/arr-i-parse.rkt defined 45 exported 32
>>>>> collects/racket/contract/private/blame.rkt defined 30 exported 18
>>>>> collects/racket/contract/private/ds-helpers.rkt defined 18 exported 10
>>>>> collects/racket/contract/base.rkt defined 0 exported 146
>>>>> collects/racket/contract/exists.rkt defined 16 exported 3
>>>>> collects/racket/draw/private/utils.rkt defined 3 exported 3
>>>>> collects/racket/draw/private/bitmap-dc.rkt defined 3 exported 2
>>>>> collects/racket/draw/private/bitmap.rkt defined 25 exported 5
>>>>> collects/racket/draw/private/color.rkt defined 15 exported 7
>>>>> collects/racket/draw/private/font-syms.rkt defined 3 exported 3
>>>>> collects/racket/draw/private/record-dc.rkt defined 13 exported 3
>>>>> collects/racket/draw/private/libs.rkt defined 1 exported 1
>>>>> collects/racket/draw/private/fmod.rkt defined 1 exported 1
>>>>> collects/racket/draw/private/brush.rkt defined 7 exported 4
>>>>> collects/racket/draw/private/gl-context.rkt defined 11 exported 4
>>>>> collects/racket/draw/private/lzw.rkt defined 3 exported 1
>>>>> collects/racket/draw/private/point.rkt defined 4 exported 4
>>>>> collects/racket/draw/private/local.rkt defined 50 exported 25
>>>>> collects/racket/draw/private/post-script-dc.rkt defined 5 exported 1
>>>>> collects/racket/draw/private/dc-path.rkt defined 10 exported 3
>>>>> collects/racket/draw/private/ps-setup.rkt defined 12 exported 6
>>>>> collects/racket/draw/private/gl-config.rkt defined 1 exported 1
>>>>> collects/racket/draw/private/define.rkt defined 8 exported 4
>>>>> collects/racket/draw/private/region.rkt defined 8 exported 4
>>>>> collects/racket/draw/private/dc.rkt defined 20 exported 6
>>>>> collects/racket/draw/private/font.rkt defined 16 exported 9
>>>>> collects/racket/draw/private/syntax.rkt defined 54 exported 31
>>>>> collects/racket/draw/private/dc-intf.rkt defined 1 exported 1
>>>>> collects/racket/draw/private/hold.rkt defined 2 exported 1
>>>>> collects/racket/draw/private/pen.rkt defined 10 exported 5
>>>>> collects/racket/draw/private/font-dir.rkt defined 4 exported 3
>>>>> collects/racket/draw/gif.rkt defined 46 exported 1
>>>>> collects/racket/draw/bmp.rkt defined 9 exported 1
>>>>> collects/racket/draw/xpm.rkt defined 4 exported 1
>>>>> collects/racket/draw/unsafe/png.rkt defined 118 exported 57
>>>>> collects/racket/draw/unsafe/jpeg.rkt defined 814 exported 29
>>>>> collects/racket/draw/unsafe/bstr.rkt defined 1 exported 1
>>>>> collects/racket/draw/unsafe/cairo.rkt defined 178 exported 146
>>>>> collects/racket/draw/unsafe/pango.rkt defined 214 exported 138
>>>>> collects/racket/draw/xbm.rkt defined 3 exported 1
>>>>> collects/racket/provide.rkt defined 2 exported 2
>>>>> collects/racket/async-channel.rkt defined 32 exported 6
>>>>> collects/racket/unit.rkt defined 0 exported 37
>>>>> collects/racket/private/kw.rkt defined 89 exported 14
>>>>> collects/racket/private/old-if.rkt defined 1 exported 1
>>>>> collects/racket/private/sandbox-coverage.rkt defined 26 exported 1
>>>>> collects/racket/private/stxcase.rkt defined 8 exported 5
>>>>> collects/racket/private/define-struct.rkt defined 8 exported 5
>>>>> collects/racket/private/stxparamkey.rkt defined 15 exported 6
>>>>> collects/racket/private/letstx-scheme.rkt defined 4 exported 20
>>>>> collects/racket/private/stxcase-scheme.rkt defined 3 exported 13
>>>>> collects/racket/private/serialize.rkt defined 30 exported 8
>>>>> collects/racket/private/struct.rkt defined 1 exported 1
>>>>> collects/racket/private/with-stx.rkt defined 5 exported 2
>>>>> collects/racket/private/misc.rkt defined 18 exported 22
>>>>> collects/racket/private/name.rkt defined 1 exported 1
>>>>> collects/racket/private/sc.rkt defined 36 exported 10
>>>>> collects/racket/private/norm-arity.rkt defined 4 exported 3
>>>>> collects/racket/private/base.rkt defined 0 exported 1287
>>>>> collects/racket/private/hash.rkt defined 5 exported 5
>>>>> collects/racket/private/stxmz-body.rkt defined 2 exported 2
>>>>> collects/racket/private/serialize-structs.rkt defined 17 exported 17
>>>>> collects/racket/private/lang/reader.rkt defined 6 exported 3
>>>>> collects/racket/private/stxloc.rkt defined 5 exported 6
>>>>> collects/racket/private/more-scheme.rkt defined 46 exported 26
>>>>> collects/racket/private/struct-info.rkt defined 11 exported 5
>>>>> collects/racket/private/map.rkt defined 4 exported 4
>>>>> collects/racket/private/local.rkt defined 0 exported 1
>>>>> collects/racket/private/class-internal.rkt defined 319 exported 145
>>>>> collects/racket/private/qq-and-or.rkt defined 7 exported 6
>>>>> collects/racket/private/pre-base.rkt defined 6 exported 1226
>>>>> collects/racket/private/namespace.rkt defined 11 exported 6
>>>>> collects/racket/private/norm-define.rkt defined 1 exported 1
>>>>> collects/racket/private/reqprov.rkt defined 25 exported 24
>>>>> collects/racket/private/kernstruct.rkt defined 46 exported 46
>>>>> collects/racket/private/old-ds.rkt defined 3 exported 3
>>>>> collects/racket/private/define.rkt defined 4 exported 4
>>>>> collects/racket/private/dict.rkt defined 96 exported 33
>>>>> collects/racket/private/old-procs.rkt defined 9 exported 8
>>>>> collects/racket/private/promise.rkt defined 35 exported 23
>>>>> collects/racket/private/stx.rkt defined 19 exported 18
>>>>> collects/racket/private/old-rp.rkt defined 7 exported 7
>>>>> collects/racket/private/kw-file.rkt defined 11 exported 9
>>>>> collects/racket/private/list.rkt defined 21 exported 17
>>>>> collects/racket/private/ellipses.rkt defined 2 exported 2
>>>>> collects/racket/private/vector-wraps.rkt defined 1 exported 1
>>>>> collects/racket/private/sort.rkt defined 1 exported 1
>>>>> collects/racket/private/class-events.rkt defined 15 exported 10
>>>>> collects/racket/private/for.rkt defined 94 exported 57
>>>>> collects/racket/private/cond.rkt defined 4 exported 4
>>>>> collects/racket/private/define-et-al.rkt defined 6 exported 6
>>>>> collects/racket/private/classidmap.rkt defined 37 exported 19
>>>>> collects/racket/private/portlines.rkt defined 3 exported 3
>>>>> collects/racket/private/stxparam.rkt defined 0 exported 1
>>>>> collects/racket/private/small-scheme.rkt defined 0 exported 16
>>>>> collects/racket/private/string.rkt defined 16 exported 10
>>>>> collects/racket/private/modbeg.rkt defined 3 exported 1
>>>>> collects/racket/private/qqstx.rkt defined 5 exported 4
>>>>> collects/racket/unit/lang.rkt defined 3 exported 1319
>>>>> collects/racket/unit/lang/reader.rkt defined 6 exported 3
>>>>> collects/racket/base.rkt defined 0 exported 1287
>>>>> collects/racket/mpair.rkt defined 23 exported 20
>>>>> collects/racket/future.rkt defined 0 exported 5
>>>>> collects/racket/trait.rkt defined 64 exported 9
>>>>> collects/racket/fasl.rkt defined 2 exported 2
>>>>> collects/racket/udp.rkt defined 1 exported 22
>>>>> collects/racket/base/lang/reader.rkt defined 6 exported 3
>>>>> collects/racket/function.rkt defined 5 exported 4
>>>>> collects/racket/vector.rkt defined 26 exported 19
>>>>> collects/racket/lang/reader.rkt defined 6 exported 3
>>>>> collects/racket/generator.rkt defined 11 exported 7
>>>>> collects/racket/date.rkt defined 0 exported 7
>>>>> collects/racket/require-syntax.rkt defined 1 exported 1
>>>>> collects/racket/fixnum.rkt defined 6 exported 34
>>>>> collects/racket/flonum.rkt defined 6 exported 42
>>>>> collects/racket/struct-info.rkt defined 0 exported 6
>>>>> collects/racket/shared.rkt defined 0 exported 1
>>>>> collects/racket/local.rkt defined 1 exported 1
>>>>> collects/racket/enter.rkt defined 16 exported 1
>>>>> collects/racket/pretty.rkt defined 85 exported 25
>>>>> collects/racket/main.rkt defined 0 exported 3204
>>>>> collects/racket/unsafe/ops.rkt defined 0 exported 88
>>>>> collects/racket/port.rkt defined 17 exported 46
>>>>> collects/racket/load.rkt defined 6 exported 2
>>>>> collects/racket/require.rkt defined 4 exported 4
>>>>> collects/racket/dict.rkt defined 106 exported 37
>>>>> collects/racket/path.rkt defined 11 exported 9
>>>>> collects/racket/language-info.rkt defined 1 exported 1
>>>>> collects/racket/block.rkt defined 1 exported 1
>>>>> collects/racket/promise.rkt defined 44 exported 11
>>>>> collects/racket/list.rkt defined 39 exported 35
>>>>> collects/racket/stxparam-exptime.rkt defined 2 exported 2
>>>>> collects/racket/bool.rkt defined 6 exported 5
>>>>> collects/racket/trace.rkt defined 33 exported 8
>>>>> collects/racket/signature/lang.rkt defined 1 exported 2747
>>>>> collects/racket/signature/lang/reader.rkt defined 6 exported 3
>>>>> collects/racket/class.rkt defined 0 exported 118
>>>>> collects/racket/contract.rkt defined 0 exported 151
>>>>> collects/racket/gui.rkt defined 0 exported 3413
>>>>> collects/racket/place.rkt defined 1 exported 10
>>>>> collects/racket/provide-transform.rkt defined 22 exported 14
>>>>> collects/racket/math.rkt defined 8 exported 8
>>>>> collects/racket/stxparam.rkt defined 2 exported 4
>>>>> collects/racket/string.rkt defined 2 exported 2
>>>>> collects/racket/sandbox.rkt defined 95 exported 43
>>>>> collects/racket/match.rkt defined 1 exported 16
>>>>> collects/racket/unit-exptime.rkt defined 0 exported 2
>>>>> collects/racket/help.rkt defined 10 exported 1
>>>>> collects/racket/draw.rkt defined 0 exported 30
> 



Posted on the dev mailing list.