Pharo Dataset is a dataset of source code metrics collected from several systems. The dataset includes measures of the following Pharo application:
Systems | Description | NOC | ||
---|---|---|---|---|
ACD | Event debugger | 12 | ||
Announcements | Object dependency framework | 12 | ||
Arki | Engine for building reports | 19 | ||
Artefact | Framework to generate PDF documents | 106 | ||
AsmJit | Assembler to generate machine code for x86/x64 architectures | 40 | ||
AST | Refactoring engine | 70 | ||
Athens | A vector-based graphics framework | 109 | ||
Balloon | Special rendering engine | 25 | ||
ClassOrganizer | Module system for Pharo classes | 6 | ||
CodeImport | 11 | |||
Collections | Collection library | 83 | ||
CommandShell | Command line scripts framework | 16 | ||
Compiler | The Pharo legacy compiler | 46 | ||
Compression | Compression protocols | 26 | ||
Debugger | Pharo debugger | 35 | ||
DeepTraverser | Graph tools | 6 | ||
Dynamix-Core | Dynamic analysis framework | 10 | ||
EyeSee | Visualization framework | 66 | ||
Fame | Meta model used to describe other model | 66 | ||
Files | New Library to deal with files | 15 | ||
FileSystem | Library for dealing with files | 47 | ||
FreeType | Library to read font data and rendering used in layout | 41 | ||
Fuel | Binary object graph serializer | 71 | ||
Glamour | Engine for scripting interactive browsers | 277 | ||
Gofer | A tool to work with groups of Monticello packages | 28 | ||
Graph-ET | Charting framework | 29 | ||
GraphET2 | Library for creating charts | 53 | ||
Graphics | Framework for rendering graphics |
38 | ||
Grease | Dialects library to run the Seaside web application |
41 | ||
GroupManager | Extension of Nautilus to handle groups | 21 | ||
GT | Toolkit for Pharo | 120 | ||
Hashtable | Application that uses chaining for collision resolution | 17 | ||
HelpSystem | Developer tools | 17 | ||
HudsonBuildTools20 | Utility classes for the integration continue with Jenkins | 8 | ||
Kernel | The kernel of the Pharo runtime | 137 | ||
KeyChain | A User management system | 21 | ||
Keymapping | Keyboard shortcut management | 39 | ||
Komitter | A tool to commit code with fine granularity | 47 | ||
Magritte | Application development frameworks | 103 | ||
Manifest | A package documentation library | 13 | ||
Merlin | Library to create wizards | 75 | ||
Metacello | Graphical tool to versioning | 136 | ||
Monticello | Source code versioning system | 142 | ||
Moose | Software and data analysis platform | 300 | ||
Morphic | Pharo’s graphical interface | 202 | ||
Multilingual | Support for Unicode and friends | 37 | ||
NativeBoost | A language-side approach to Foreign-Function-Interfaces (FFIs | 108 | ||
Nautilus | The Pharo system code browser | 112 | ||
NECompletion | Developer tools | 28 | ||
Network | Low level network library | 40 | ||
NOCompletion | Developer tools | 8 | ||
OpalCompiler | Bytecode compiler for Pharo | 73 | ||
PetitParser | Parser framework | 164 | ||
Polymorph | Framework for creating UIs in code | 154 | ||
ProfStef | Application Development frameworks | 12 | ||
Refactoring | The source code Refactoring engine | 223 | ||
Regex | Regular expressions package in Pharo | 30 | ||
Ring | Model infrastructure designed for Pharo | 27 | ||
Roassal | Open visualization engine | 244 | ||
Roassal2 | Open visualization engine | 277 | ||
RoelTyper | A single method type inference | 17 | ||
Rubric | A deep refactoring of the Pharo text editor | 87 | ||
Shout | Developer tools | 11 | ||
Slot | Slots for Pharo | 45 | ||
SmallDude | Duplication analysis | 25 | ||
SmartSuggestions | Developer tools | 34 | ||
Spec | A framework for describing and building user interfaces | 182 | ||
Spotlight2 | A spotlight-like morph for Pharo | 28 | ||
SUnit | Testing tool | 28 | ||
System-Announcements | Support for system events (e.g., class creation, deletion) | 23 | ||
System-CommandLine | A tool to help chopping command line input | 11 | ||
Tabs | Suppor for UI Tabs | 13 | ||
Text | A text editor | 37 | ||
Tools | Set of developers tools (e.g., debugger) | 62 | ||
Trachel | Object model for graphical widgets | 61 | ||
Units-Core | A simple package for units | 13 | ||
XML | XML Parser and Writter | 135 | ||
Zinc | HTTP networking protocol framework | 96 | ||
Zodiac | Regular and secure socket streams framework | 11 |
Data and Tools
Dataset download: PharoDataset.zip
For each system, the dataset includes the following source code metrics measured at the level of classes:
- Number of attributes (NOA)
- Number of methods (NOM)
- FAN-OUT
- Weighted Methods per Class (WMC)
Basically, for each system S and metric M, there is in the Pharo dataset a csv file whose lines represent the classes of S and whose columns represent M. A cell (C,M) in this file contains the value of the metric M, measured for the class c.
To derive relative thresholds use RTTool
Publications
- Paloma Oliveira, Marco Tulio Valente, Alexandre Bergel, and Alexander Serebrenik. Validating Metric Thresholds with Developers – an Early Result. Submitted to 31th International Conference on Software Maintenance and Evolution – Early Research Achievements (ICSME-ERA Track), pages 1-5, 2015.
-
Paloma Oliveira, Fernando Lima, Marco Tulio Valente, and Alexander Serebrenik. RTTOOL: A Tool for Extracting Relative Thresholds for Source Code Metrics. In 30th International Conference on Software Maintenance and Evolution (ICSME), Tool Demo Track, pages 1-4, 2014. [Bibtex]
@inproceedings{rttool, author = {Paloma Oliveira and Fernando Lima and Marco Tulio Valente and Alexander Serebrenik}, title = {{RTTOOL}: A Tool for Extracting Relative Thresholds for Source Code Metrics}, booktitle = {30th International Conference on Software Maintenance and Evolution (ICSME), Tool Demo Track}, year = {2014}, pages = {1--4}, }
Paloma Oliveira, Marco Tulio Valente, and Fernando Lima. Extracting Relative Thresholds for Source Code Metrics. In IEEE Conference on Software Maintenance, Reengineering and Reverse Engineering (CSMR-WCRE), pages 254-263, 2014. [Bibtex]
@inproceedings{csmrwcre2014b, author = {Paloma Oliveira and Marco Tulio Valente and Fernando Lima}, title = {Extracting Relative Thresholds for Source Code Metrics}, booktitle = {IEEE Conference on Software Maintenance, Reengineering and Reverse Engineering (CSMR-WCRE)}, year = {2014}, pages = {254--263}, pdf = {http://www.dcc.ufmg.br/~mtov/pub/2014_csmrwcre_thresholds.pdf} }