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
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.