Skip to content

Rascal source, and extracted data, for SANER 2015 experiments on the evolution of dynamic features in PHP code.

Notifications You must be signed in to change notification settings

PLSE-Lab/saner-2015

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is the project source for an empirical analysis of trends in dynamic feature evolution across the release history of two projects, MediaWiki and WordPress.

To run the Rascal code in this project, you will of course first need to install Rascal. Details on how to install Rascal are available at the Rascal homepage. You will also need the current versions of PHP AiR and the PHP parser that we use on this project. Details on the parser are available on the GitHub project page for our fork, while details on PHP AiR are also available on its GitHub project page, including installation details. The newest version of both projects should work; you can also specifically pull v1.0.0 of PHP AiR.

To run the code, you should import PHP Air and this project both into Eclipse. You can then open a Rascal console and execute the code in the SANER2015 module. The code currently generates figures for MediaWiki, WordPress, and phpMyAdmin, although only MediaWiki and WordPress are included in the paper (the work on phpMyAdmin is ongoing, and space in the paper was also limited).

To get the systems, you can clone the following repositories:

The scripts in /src/lang/php/extract then show how the versions of MediaWiki and phpMyAdmin were extracted from the repositories; a similar script for WordPress will be added soon, although the WordPress repository is missing some earlier versions of the system which need to be downloaded manually. To run the extract, you should first create the expected directory structure. The script expects a directory layout with PHPAnalysis at the top, a systems directory beneath this, and then a directory for each system, e.g., MediaWiki, phpMyAdmin, and WordPress. Individual directories are then created for each version. These correspond to the directories expected by PHP AiR for working with an existing corpus, and are also set in module lang::php::util::Config. The repository will be in whatever directory it was cloned into. Each script accepts a file with a filtered list of tags, gotten initially using git tag and then filtered to remove versions other than standard releases (e.g., alpha, beta, and release-candidate level releases).

For MediaWiki, an additional step is needed. Earier versions of MediaWiki used an internal concept of namespaces. Since this MediaWiki Namespace conflicts with a current reserved word, these earlier versions need to be modified to rename this to MWNamespace, allowing the files to be parsed. The script xform, which should be run in the MediaWiki directory holding the various versions, performs this step. Although it only needs to be run on these earlier versions, it is safe to run across the entire release history.

To see the figures generated based on running the analysis, you can click on the Wiki associated with this project. The figures are also all available in .csv files, one each for WordPress, MediaWiki, and phpMyAdmin, found under /src/lang/php/experiments/saner2015.

About

Rascal source, and extracted data, for SANER 2015 experiments on the evolution of dynamic features in PHP code.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published