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