Yes good script.

Stef

On Dec 7, 2010, at 4:35 PM, Alexandre Bergel wrote:

> Indeed. We could also refine it further by identifying the most used classes 
> for a representative sample of the Pharo ecosystem.
> It still says StandardFonts, SystemChangeNotifier, FreeTypeSettings, 
> MCPackage, ... have to be commented
> 
> Alexandre
> 
> 
> On 7 Dec 2010, at 12:29, Gary Chambers wrote:
> 
>> Naturally, every method of a class references its own class as a literal...
>> Also, class-side methods not accounted for.
>> 
>> Easy enough to change the script to higlight only external references:
>> 
>> d := Dictionary new.
>> Smalltalk allClasses, (Smalltalk allClasses collect: [:cls | cls class]) do: 
>> [ :cls |
>> cls methods do: [:cm | (cm literals select: [:l | l isKindOf: Association ])
>> do: [:assoc |
>> (assoc value isBehavior and: [assoc value ~~ cls])
>>  ifTrue: [d at: assoc value put: (d at: assoc value ifAbsentPut: [0] ) + 
>> 1]]]].
>> associations := d associations asSortedCollection: [:a1 :a2 | a2 value < a1 
>> value].
>> associations select: [:ass | ass key comment isNil or: [ass key comment 
>> isEmpty or: [ass key comment asString includesSubString: 'xxxxxx']]]
>> 
>> Regards, Gary
>> 
>> ----- Original Message ----- From: "Alexandre Bergel" <[email protected]>
>> To: <[email protected]>
>> Sent: Tuesday, December 07, 2010 2:53 PM
>> Subject: Re: [Pharo-project] Comments or no integration: a simple choice 
>> foryou
>> 
>> 
>> A small script that gives the most referenced classes that are not commented:
>> I run the test in an image with Moose and Spy.
>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>> "Get the number of references per class"
>> d := Dictionary new.
>> Smalltalk allClasses do: [ :cls | cls methods do: [:cm | (cm literals 
>> select: [:l | l isKindOf: Association ])
>> do: [:assoc |
>> (assoc value isBehavior)
>> ifTrue: [d at: assoc value put: (d at: assoc value ifAbsentPut: [0] ) + 
>> 1]]]].
>> associations := d associations asSortedCollection: [:a1 :a2 | a2 value < a1 
>> value].
>> 
>> "Get the classes that are not commented"
>> associations select: [:ass | ass key comment isNil or: [ass key comment 
>> isEmpty or: [ass key comment asString includesSubString: 'xxxxxx']]]
>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>> 
>> The first 30 entries:
>> SortedCollectionTest->307
>> HeapTest->304
>> IntervalTest->250
>> DictionaryTest->192
>> BagTest->167
>> RxMatcherTest->166
>> PluggableTextMorph->149
>> MooseModel->144
>> UIThemeWatery2->132
>> SystemChangeNotifier->132
>> PPSmalltalkParserTests->129
>> FAMIXClassNavigationTest->128
>> PPJavaSyntax->128
>> PPSmalltalkGrammarTests->128
>> RBRefactoryTestDataApp->123
>> NSFileStream->118
>> NSRWBinaryOrTextStream->109
>> LogicalFont->109
>> NSMultiByteBinaryOrTextStream->108
>> UIThemeW2K->103
>> MCWorkingCopy->101
>> BrowserEnvironment->97
>> DemoSettingStyle->94
>> PPJavaLexiconTests->94
>> MCClassDefinition->93
>> NSAbstractInflateStream->92
>> MCWorkingCopyBrowser->91
>> NSCollectionStreamTest->91
>> GMMetaObject->91
>> ExceptionTester->90
>> 
>> 
>> Cheers,
>> Alexandre
>> 
>> 
>> On 7 Dec 2010, at 10:48, Stéphane Ducasse wrote:
>> 
>>>> The good idae is to push and promote people to put class comments, but not 
>>>> to remove not commented classes from Dev, bacause otherise, you will need 
>>>> to remove 80% of the classes.
>>> 
>>> 
>>> So this is simple to start fixing some of them.
>>> I think that without such objectives we will never make any progress and we 
>>> should.
>>> 
>>> so what are the first 5% of packages that are not documented.
>>> 
>>> Stef
>>> 
>>>> The next step would be a Pareto classification, as it can be accepted (I 
>>>> hope) that SUnit has more history (and it is documented elsewhere, like 
>>>> PBE book) than other classes which even the name of it or its methods may 
>>>> be insufficient to arrive at for what is the class.
>>>> 
>>>> We should create IRC meetings, sprints, etc. specially targeted to 
>>>> document these classes.
>>>> 
>>>> my .019999...
>>>> 
>>>> --
>>>> Cesar Rabak
>>>> 
>>>> 
>>>> Em 05/12/2010 20:07, Mariano Martinez Peck < [email protected] > 
>>>> escreveu:
>>>> 
>>>> On Sun, Dec 5, 2010 at 9:52 PM, Stéphane Ducasse 
>>>> <[email protected]> wrote:
>>>> 
>>>> Hi guys
>>>> 
>>>> I decided that I will not integrate any code that is not documented in 
>>>> Pharo.
>>>> 
>>>> I strongly suggest to remove from Pharo-dev packages whose classes are not 
>>>> commented.
>>>> 
>>>> 
>>>> I think this is not a good idea...look this approx:
>>>> 
>>>> 
>>>> 
>>>> | pharoCorePackages packagesDev nonCommentedClasses totalClasses |
>>>> pharoCorePackages := #('MultilingualTests' 'Morphic' 'ToolBuilder-Kernel' 
>>>> 'PackageInfo' 'Polymorph-ToolBuilder' 'Network-Kernel' 'Network-Protocols' 
>>>> 'Compiler' 'System-Finalization' 'Settings-Graphics' 'Collections' 
>>>> 'Network-RemoteDirectory' 'Traits' 'Network-URI' 'Settings-Display' 
>>>> 'Collections-Abstract' 'Settings-Compiler' 'MonticelloMocks' 
>>>> 'ScriptLoader11' 'System-Digital Signatures' 'System-Localization' 
>>>> 'MenuRegistration' 'Polymorph-TaskbarIcons' 'Monticello' 
>>>> 'ToolBuilder-Morphic' 'MCDirtyPackage' 'Collections-Weak' 
>>>> 'Settings-Polymorph' 'Tests' 'HelpSystem-Core-Utilities' 'SUnit' 
>>>> 'Collections-Text' 'Compression' 'Morphic-MorphTreeWidget' 
>>>> 'HelpSystem-Core' 'ToolsTest' 'Gofer-Core' 'Gofer-Tests' 
>>>> 'Collections-Stack' 'FreeType' 'MonticelloConfigurations' 
>>>> 'Polymorph-Geometry' 'Collections-Support' 'SUnitGUI' 
>>>> 'HelpSystem-Core-Model' 'Tests-VM' 'System-Change Notification' 'System' 
>>>> 'Tests-ObjectsAsMethods' 'HostMenus' 'Network-MIME' 'Network-RFC822' 
>>>> 'VB-Regex' 'TrueType' 'Depr
>>>> ecatedPreferences' 'System-Clipboard' 'System-Settings' 'MorphicTests' 
>>>> 'System-Serial Port' 'NetworkTests' 'Collections-Unordered' 
>>>> 'System-Changes' 'System-Object Storage' 'Collections-Traits' 
>>>> 'System-Platforms' 'Tests-PrimCallController' 'Morphic-TrueType' 
>>>> 'Multilingual' 'Graphics' 'Collections-Strings' 'KernelTests' 
>>>> 'System-FileRegistry' 'Tests-Bugs' 'ToolBuilder-SUnit' 'Tests-Release' 
>>>> 'Morphic-Balloon' 'Settings-Network' 'System-Applications' 
>>>> 'Polymorph-Tools-Diff' 'Settings-Tools' 'ScriptLoader' 'ST80' 
>>>> 'FreeTypeSubPixelAntiAliasing' 'Settings-Kernel' 'Settings-System' 
>>>> 'CompilerTests' 'System-Tools' 'System-Hashing' 'System-Download' 
>>>> 'Collections-Streams' 'Tests-SystemChangeNotification' 'GraphicsTests' 
>>>> 'Polymorph-Widgets' 'Kernel' 'Tools' 'Settings-FreeType' 'FreeTypeTests' 
>>>> 'Settings-Monticello' 'HelpSystem-Tests' 'Polymorph-EventEnhancements' 
>>>> 'System-Support' 'MonticelloGUI' 'System-FilePackage' 'System-Object 
>>>> Events' 'Announcements' 'System-Text' 'Exceptions' 'Network-
>>>> UUID' 'System-Pools' 'FixUnderscores' 'HelpSystem-Core-UI' 
>>>> 'GraphicsResources' 'Files' 'Gofer' 'Network-MailSending' 
>>>> 'Collections-Arrayed' 'CollectionsTests' 'Balloon' 'Network-Url' 
>>>> 'Collections-Sequenceable' ).
>>>> packagesDev := (PackageInfo allPackages
>>>> collect: [:each | each packageName])
>>>> difference: pharoCorePackages.
>>>> nonCommentedClasses := packagesDev
>>>> inject: 0
>>>> into: [:sum :each | sum + (((PackageInfo named: each) classes
>>>> select: [:aClass | aClass comment asString includesSubString: 'is 
>>>> xxxxxxxxx.']) size)].
>>>> Transcript show: 'nonCommentedClasses: ', nonCommentedClasses asString.
>>>> 
>>>> totalClasses :=  packagesDev inject: 0 into: [:sum :each | sum + 
>>>> (PackageInfo named: each) classes size ].
>>>> Transcript show: 'totalClasses: ', totalClasses asString.
>>>> 
>>>> 
>>>> 
>>>> Shows:
>>>> 
>>>> nonCommentedClasses: 1116
>>>> totalClasses: 1369
>>>> 
>>>> 
>>>> I'm not sure that I will look at code or answer question to code that is 
>>>> not commented.
>>>> We should change our mindset and it seems that we do not care, so we 
>>>> should take radical decisions:
>>>> less changes, less progress, more comments.
>>>> 
>>>> And for once I will not bash the past. Smalltalk was always with methods 
>>>> fully documented.
>>>> We are just plain lazy and this is a shame.
>>>> 
>>>> Stef
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> -- 
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel  http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>> 
>> 
>> 
>> 
>> 
>> 
>> 
> 
> -- 
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> 
> 
> 
> 
> 
> 


Reply via email to