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