BugzillaCalculatedPriorityExtension is a project mainly written in JAVASCRIPT and PERL, it's free.
Restrict valid values for 'priority' and 'bug_severity' fields based on the value of multiple custom input fields.
This extension has no user interface; it is a hard-coded implementation of a calculated value scheme for bugzilla. It expects the following custom fields to be defined:
cf_impact: (I)
Blocker - Problems that prevent testing or development work High - Problems causing crashes, data loss, severe performance problems Normal - Broken or missing functionality Low - Improvement to existing code, e.g. performance enhancement Enhancement - New features
cf_probability: (P)
Seen by all or almost all users who use the feature (>=95% of users) Seen by more than 2/3 of the users who use the feature (>66% and <95%) Seen by about half the users who use the feature (>33% and <67%) Seen by about 1/3 of the users who use the feature (>5% and <34%) Seen by no or very few users who use the feature (<=5% of users)
cf_defectclass: (D)
Stability - Reliability; Availability; Testability; Security; Liability; Storage (data loss/corruption); Performance - Efficiency (use of resources: memory, disk, CPU); Scalability; Copyright Functionality - Logic or Calculation; Access Control; Compatibility; Interoperability Usability - Learnability; Readability; Documentation; Consistency; Workflow Typographic or grammatical - Aesthetics; Appearance or Cosmetic
cf_workeffort: (W)
Extensive analysis needed - > 1 week Above average analysis needed - < 1 week Normal analysis needed - < 3 days Minimal analysis needed - < 1 day No substantial analysis needed - < 4 hours
These custom fields must be entered into bugzilla via its UI. Once these fields are available, this extension will automatically calculate the bug_severity and priority (the two fields labeled "Importance" in the UI) based on the following criteria.
bug_severity:
1 - (IPD) == 0 2 - (IPD) == 1 - 4 3 - (IPD) == 6 - 12 4 - (IPD) == 27 - 36 5 - (IPD) >= 37
The effect of this is that any of I, P or D are zero, then the severity will always be 1, and all of I, P and D must be large before the severity evaluates to 4 or 5. If any of I, P or D are unset, then the bug_severity field can be set to any value from 1 - 5; otherwise, it will be forced to the value indicated by the calculation above.
The resulting severity value feeds into the bug priority calculation; it is used together with the cf_workeffort field as an index into the two-dimensional priority lookup table:
priority:
: Work Effort
:
: 1 2 3 4 5
------------+---+---+---+---+--- 1 : * 1 1
3 : * 3 2 Level + 4 : 5 4 4 4 3
5 : 5 5 4 4 3
If the work effort is unset, or if the lookup table results in a "*", then the bug priority can be set to any value from 1 - 5; otherwise, it will be forced to the value indicated in the table.
These rules can be changed by modifying the template that defines the lookup tables and field names; see:
template/en/default/hook/bug/create/create-end.html.tmpl template/en/default/hook/bug/edit-after_custom_fields.html.tmpl
Copy the CalculatedPriority directory to bugzilla/extensions.
Optional:
From the bugzilla root directory:
patch -Np1 < extensions/CalculatedPriority/patch_4.0.2.patch