Hairball is a plugin-able framework useful for static analysis of Scratch projects.
Project description
# Hairball
Hairball is a plugin-able framework useful for static analysis of Scratch
projects.
The paper and presentation slides for Hairball can be found at:
http://cs.ucsb.edu/~bboe/p/cv#sigcse13
A Hairball demo web service is running and available at:
http://hairball.herokuapp.com
## Hairball installation
With a proper python environment (one which has `pip` available), installation
is as simple as `pip install hairball`. `easy_install` can also be used via
`easy_install hairball`.
To install from source, first checkout this project and then navigate your
command-line interface to the outer hairball directory that contains
`setup.py`. Then run `python setup.py install`.
## Running Hairball
Once installed, to see how to use hairball run `hairball --help`. That will
produce output similar to the following:
```
Usage: hairball -p PLUGIN_NAME [options] PATH...
PATH can be either the path to a scratch file, or a directory containing
scratch files. Multiple PATH arguments can be provided.
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-d DIR, --plugin-dir=DIR
Specify the path to a directory containing plugins.
Plugins in this directory take precedence over
similarly named plugins included with Hairball.
-p PLUGIN, --plugin=PLUGIN
Use the named plugin to perform analysis. This option
can be provided multiple times.
-k KURT_PLUGIN, --kurt-plugin=KURT_PLUGIN
Provide either a python import path (e.g, kelp.octopi)
to a package/module, or the path to a python file,
which will be loaded as a Kurt plugin. This option can
be provided multiple times.
```
## Available Plugins
Below are a list of available plugins that can be used as the `-p PLUGIN_NAME`
option:
* blocks.BlockCounts
* blocks.DeadCode
* checks.Animation (not fully tested)
* checks.BroadcastReceive
* checks.SaySoundSync (not fully tested)
* duplicate.DuplicateScripts
* initialization.AttributeInitialization
* initialization.VariableInitialization (not fully tested)
Note: The output for each plugin is not yet completely standardized. Please
feel free to file any issues or make improvements and send pull requests.
## Caching Support
The python Kurt package unfortunately is pretty slow to parse Scratch 1.4 (and
similar) files. To remedy this situation, Hairball has built-in support for
caching a serialized version of the Kurt object. On subsequent passes through
the same data you should notice a TREMENDOUS speed improvement.
__Note__: At the moment the cache is unbounded, so keep an eye on your disk
space. The cache location can be discovered by running:
python -c "import appdirs; print appdirs.user_cache_dir('Hairball', 'bboe')"
Hairball is a plugin-able framework useful for static analysis of Scratch
projects.
The paper and presentation slides for Hairball can be found at:
http://cs.ucsb.edu/~bboe/p/cv#sigcse13
A Hairball demo web service is running and available at:
http://hairball.herokuapp.com
## Hairball installation
With a proper python environment (one which has `pip` available), installation
is as simple as `pip install hairball`. `easy_install` can also be used via
`easy_install hairball`.
To install from source, first checkout this project and then navigate your
command-line interface to the outer hairball directory that contains
`setup.py`. Then run `python setup.py install`.
## Running Hairball
Once installed, to see how to use hairball run `hairball --help`. That will
produce output similar to the following:
```
Usage: hairball -p PLUGIN_NAME [options] PATH...
PATH can be either the path to a scratch file, or a directory containing
scratch files. Multiple PATH arguments can be provided.
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-d DIR, --plugin-dir=DIR
Specify the path to a directory containing plugins.
Plugins in this directory take precedence over
similarly named plugins included with Hairball.
-p PLUGIN, --plugin=PLUGIN
Use the named plugin to perform analysis. This option
can be provided multiple times.
-k KURT_PLUGIN, --kurt-plugin=KURT_PLUGIN
Provide either a python import path (e.g, kelp.octopi)
to a package/module, or the path to a python file,
which will be loaded as a Kurt plugin. This option can
be provided multiple times.
```
## Available Plugins
Below are a list of available plugins that can be used as the `-p PLUGIN_NAME`
option:
* blocks.BlockCounts
* blocks.DeadCode
* checks.Animation (not fully tested)
* checks.BroadcastReceive
* checks.SaySoundSync (not fully tested)
* duplicate.DuplicateScripts
* initialization.AttributeInitialization
* initialization.VariableInitialization (not fully tested)
Note: The output for each plugin is not yet completely standardized. Please
feel free to file any issues or make improvements and send pull requests.
## Caching Support
The python Kurt package unfortunately is pretty slow to parse Scratch 1.4 (and
similar) files. To remedy this situation, Hairball has built-in support for
caching a serialized version of the Kurt object. On subsequent passes through
the same data you should notice a TREMENDOUS speed improvement.
__Note__: At the moment the cache is unbounded, so keep an eye on your disk
space. The cache location can be discovered by running:
python -c "import appdirs; print appdirs.user_cache_dir('Hairball', 'bboe')"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hairball-0.3rc1.tar.gz
(13.5 kB
view details)
Built Distribution
File details
Details for the file hairball-0.3rc1.tar.gz
.
File metadata
- Download URL: hairball-0.3rc1.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0eff237b85d5843c509b8fbb000bc4ba963dea0700b79bd617eaa4124890023 |
|
MD5 | b90c5c50dd996cb9c0986942a9551033 |
|
BLAKE2b-256 | 5fc81d85047bd3ef214e599755934ce3a8a6410dc720e8ebd612a5e19f0b9221 |
File details
Details for the file hairball-0.3rc1-py2.py3-none-any.whl
.
File metadata
- Download URL: hairball-0.3rc1-py2.py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | daafb1463565f800aba4bca4654dcb6c6cac4c5c29e114b9ffa4cbba11d48a18 |
|
MD5 | dfc73fdb9e4927c4587b08b355f898b2 |
|
BLAKE2b-256 | 6641d2bfbca8004dd060f478932d595d2ca5087c84fcc933f191470d0eccdaed |