Pork: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
(→Tools) |
||
| Line 20: | Line 20: | ||
* [[DeHydra]] is a scriptable static analysis tool. It is useful for finding patterns in the codebase. It has been used to find bugs, produce class diagrams and to infer auto-refactoring candidates in the code. | * [[DeHydra]] is a scriptable static analysis tool. It is useful for finding patterns in the codebase. It has been used to find bugs, produce class diagrams and to infer auto-refactoring candidates in the code. | ||
* [[Outparamdel]] rewrites code using outparameters to utilize the return value instead. | * [[Outparamdel]] rewrites code using outparameters to utilize the return value instead. [http://blog.mozilla.com/tglek/2007/08/06/outparams-take-2/ Blog entry] | ||
* [[Prcheck]] is a static analysis tool which produces patches as output. It is useful for correcting bugs that resulting PRBool behaving more like an int than a C++ bool. | * [[Prcheck]] is a static analysis tool which produces patches as output. It is useful for correcting bugs that resulting PRBool behaving more like an int than a C++ bool. [http://blog.mozilla.com/tglek/2007/06/26/status-report-recent-work/ Blog entry] | ||
* [[Garburator]] rewrites nsCOMPtrs allocated on the stack into stack variables to assist the [[XPCOMGC]] project. | * [[Garburator]] rewrites nsCOMPtrs allocated on the stack into stack variables to assist the [[XPCOMGC]] project.[http://blog.mozilla.com/tglek/2007/09/12/garburator-another-day-another-rewrite-tool/ Blog entry] | ||
* [[Squash]] is now obsolete. It was primarily written to explore how elsa can be utilized to assist with [[Gecko:DeCOMtamination]]. Many rewriting strategies and patching code were first implemented in squash. | * [[Squash]] is now obsolete. It was primarily written to explore how elsa can be utilized to assist with [[Gecko:DeCOMtamination]]. Many rewriting strategies and patching code were first implemented in squash. | ||
Revision as of 19:43, 12 November 2007
Pork is a set of tools built around the elsa C/C++ parser. The primary focus of pork is to provide automated refactoring (Gecko:DeCOMtamination) and static analysis tools for Mozilla2. Pork announcement
Pork is a fork of oink. In the future pork should become a development branch for oink.
More info for pork can be found on Taras' blog.
Requirements
- GCC 3.4.x or older that can successfully build Mozilla. 64bit Ubuntu, 32bit RHEL/CentOS are known to work. 32bit Ubuntu/Debian feature a linker bug that prevents Mozilla from building with gcc 3.4.6.
- MCPP is required for refactoring tools
- SpiderMonkey is required by DeHydra
- Bison and Flex
- patchutils are recommended to manage manual and automatic patches
- MQ extension for hg is recommended. Alternatively, quilt can be used instead.
Tools
Pork is broken down into tools that focus on a specific tasks. The tools can rarely be combined and thus should be applied incrementally.
- PorkVM is a CentOS virtual machine image with a presetup pork + moz checkout.
- DeHydra is a scriptable static analysis tool. It is useful for finding patterns in the codebase. It has been used to find bugs, produce class diagrams and to infer auto-refactoring candidates in the code.
- Outparamdel rewrites code using outparameters to utilize the return value instead. Blog entry
- Prcheck is a static analysis tool which produces patches as output. It is useful for correcting bugs that resulting PRBool behaving more like an int than a C++ bool. Blog entry
- Garburator rewrites nsCOMPtrs allocated on the stack into stack variables to assist the XPCOMGC project.Blog entry
- Squash is now obsolete. It was primarily written to explore how elsa can be utilized to assist with Gecko:DeCOMtamination. Many rewriting strategies and patching code were first implemented in squash.