barnboy%trilobyte.net 7573dc0eaf Buncha' release updates. Moved all images to
./images so we don't have multiple copies of the
same image, fixed these doc bugs (in no particular order):
94949
97070
97071
97114
96498
95970
96677
94953
96501
96679
97068
97191
97192


git-svn-id: svn://10.0.0.236/trunk@101950 18797224-902f-48f8-a5cc-f745e15eee43
2001-08-29 17:25:41 +00:00

231 lines
8.9 KiB
HTML

<HTML
><HEAD
><TITLE
>Hacking Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Useful Patches and Utilities for Bugzilla"
HREF="patches.html"><LINK
REL="PREVIOUS"
TITLE="The Quicksearch Utility"
HREF="quicksearch.html"><LINK
REL="NEXT"
TITLE="GNU Free Documentation License"
HREF="gfdl.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="quicksearch.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Appendix D. Useful Patches and Utilities for Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="BZHACKING"
>D.5. Hacking Bugzilla</A
></H1
><P
> What follows are some general guidelines for changing Bugzilla, and adhering to good coding practice while doing so. We've had some checkins in the past which ruined Bugzilla installations because of disregard for these conventions. Sorry for the lack of formatting; I got this info into the Guide on the day of 2.14 release and haven't formatted it yet.
</P
><P
CLASS="LITERALLAYOUT"
><br>
The&nbsp;following&nbsp;is&nbsp;a&nbsp;guide&nbsp;for&nbsp;reviewers&nbsp;when&nbsp;checking&nbsp;code&nbsp;into&nbsp;Bugzilla's<br>
CVS&nbsp;repostory&nbsp;at&nbsp;mozilla.org.&nbsp;&nbsp;If&nbsp;you&nbsp;wish&nbsp;to&nbsp;submit&nbsp;patches&nbsp;to&nbsp;Bugzilla,<br>
you&nbsp;should&nbsp;follow&nbsp;the&nbsp;rules&nbsp;and&nbsp;style&nbsp;conventions&nbsp;below.&nbsp;&nbsp;Any&nbsp;code&nbsp;that<br>
does&nbsp;not&nbsp;adhere&nbsp;to&nbsp;these&nbsp;basic&nbsp;rules&nbsp;will&nbsp;not&nbsp;be&nbsp;added&nbsp;to&nbsp;Bugzilla's<br>
codebase.<br>
<br>
&nbsp;1.&nbsp;Usage&nbsp;of&nbsp;variables&nbsp;in&nbsp;Regular&nbsp;Expressions<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;It&nbsp;is&nbsp;very&nbsp;important&nbsp;that&nbsp;you&nbsp;don't&nbsp;use&nbsp;a&nbsp;variable&nbsp;in&nbsp;a&nbsp;regular<br>
&nbsp;&nbsp;&nbsp;&nbsp;expression&nbsp;unless&nbsp;that&nbsp;variable&nbsp;is&nbsp;supposed&nbsp;to&nbsp;contain&nbsp;an&nbsp;expression.<br>
&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;especially&nbsp;applies&nbsp;when&nbsp;using&nbsp;grep.&nbsp;&nbsp;You&nbsp;should&nbsp;use:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;grep&nbsp;($_&nbsp;eq&nbsp;$value,&nbsp;@array);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;NOT&nbsp;-<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;grep&nbsp;(/$value/,&nbsp;@array);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;you&nbsp;need&nbsp;to&nbsp;use&nbsp;a&nbsp;non-expression&nbsp;variable&nbsp;inside&nbsp;of&nbsp;an&nbsp;expression,&nbsp;be<br>
&nbsp;&nbsp;&nbsp;&nbsp;sure&nbsp;to&nbsp;quote&nbsp;it&nbsp;properly&nbsp;(using&nbsp;\Q..\E).<br>
<br>
Coding&nbsp;Style&nbsp;for&nbsp;Bugzilla<br>
-------------------------<br>
<br>
While&nbsp;it's&nbsp;true&nbsp;that&nbsp;not&nbsp;all&nbsp;of&nbsp;the&nbsp;code&nbsp;currently&nbsp;in&nbsp;Bugzilla&nbsp;adheres&nbsp;to<br>
this&nbsp;styleguide,&nbsp;it&nbsp;is&nbsp;something&nbsp;that&nbsp;is&nbsp;being&nbsp;worked&nbsp;toward.&nbsp;&nbsp;Therefore,<br>
we&nbsp;ask&nbsp;that&nbsp;all&nbsp;new&nbsp;code&nbsp;(submitted&nbsp;patches&nbsp;and&nbsp;new&nbsp;files)&nbsp;follow&nbsp;this&nbsp;guide<br>
as&nbsp;closely&nbsp;as&nbsp;possible&nbsp;(if&nbsp;you're&nbsp;only&nbsp;changing&nbsp;1&nbsp;or&nbsp;2&nbsp;lines,&nbsp;you&nbsp;don't&nbsp;have<br>
to&nbsp;reformat&nbsp;the&nbsp;entire&nbsp;file&nbsp;:).<br>
<br>
&nbsp;1.&nbsp;Whitespace<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Bugzilla's&nbsp;prefered&nbsp;indentation&nbsp;is&nbsp;4&nbsp;spaces&nbsp;(no&nbsp;tabs,&nbsp;please).<br>
<br>
&nbsp;2.&nbsp;Curly&nbsp;braces.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;opening&nbsp;brace&nbsp;of&nbsp;a&nbsp;block&nbsp;should&nbsp;be&nbsp;on&nbsp;the&nbsp;same&nbsp;line&nbsp;as&nbsp;the&nbsp;statement<br>
&nbsp;&nbsp;&nbsp;&nbsp;that&nbsp;is&nbsp;causing&nbsp;the&nbsp;block&nbsp;and&nbsp;the&nbsp;closing&nbsp;brace&nbsp;should&nbsp;be&nbsp;at&nbsp;the&nbsp;same<br>
&nbsp;&nbsp;&nbsp;&nbsp;indentation&nbsp;level&nbsp;as&nbsp;that&nbsp;statement,&nbsp;for&nbsp;example:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($var)&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"The&nbsp;variable&nbsp;is&nbsp;true";<br>
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"Try&nbsp;again";<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;NOT&nbsp;-<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($var)<br>
&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"The&nbsp;variable&nbsp;is&nbsp;true";<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;else<br>
&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"Try&nbsp;again";<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
<br>
&nbsp;3.&nbsp;File&nbsp;Names<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;names&nbsp;for&nbsp;bugzilla&nbsp;code&nbsp;and&nbsp;support&nbsp;documention&nbsp;should&nbsp;be&nbsp;legal&nbsp;across<br>
&nbsp;&nbsp;&nbsp;&nbsp;multiple&nbsp;platforms.&nbsp;&nbsp;\&nbsp;/&nbsp;:&nbsp;*&nbsp;?&nbsp;"&nbsp;&#60;&nbsp;&#62;&nbsp;and&nbsp;|&nbsp;are&nbsp;all&nbsp;illegal&nbsp;characters&nbsp;for<br>
&nbsp;&nbsp;&nbsp;&nbsp;filenames&nbsp;on&nbsp;various&nbsp;platforms.&nbsp;&nbsp;Also,&nbsp;file&nbsp;names&nbsp;should&nbsp;not&nbsp;have&nbsp;spaces&nbsp;in<br>
&nbsp;&nbsp;&nbsp;&nbsp;them&nbsp;as&nbsp;they&nbsp;can&nbsp;cause&nbsp;confusion&nbsp;in&nbsp;CVS&nbsp;and&nbsp;other&nbsp;mozilla.org&nbsp;utilities.<br>
<br>
&nbsp;4.&nbsp;Variable&nbsp;Names<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;a&nbsp;variable&nbsp;is&nbsp;scoped&nbsp;globally&nbsp;($::variable)&nbsp;its&nbsp;name&nbsp;should&nbsp;be&nbsp;descriptive<br>
&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;what&nbsp;it&nbsp;contains.&nbsp;&nbsp;Local&nbsp;variables&nbsp;can&nbsp;be&nbsp;named&nbsp;a&nbsp;bit&nbsp;looser,&nbsp;provided&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;context&nbsp;makes&nbsp;their&nbsp;content&nbsp;obvious.&nbsp;&nbsp;For&nbsp;example,&nbsp;$ret&nbsp;could&nbsp;be&nbsp;used&nbsp;as&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;staging&nbsp;variable&nbsp;for&nbsp;a&nbsp;routine's&nbsp;return&nbsp;value&nbsp;as&nbsp;the&nbsp;line&nbsp;|return&nbsp;$ret;|&nbsp;will<br>
&nbsp;&nbsp;&nbsp;&nbsp;make&nbsp;it&nbsp;blatently&nbsp;obvious&nbsp;what&nbsp;the&nbsp;variable&nbsp;holds&nbsp;and&nbsp;most&nbsp;likely&nbsp;be&nbsp;shown<br>
&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;the&nbsp;same&nbsp;screen&nbsp;as&nbsp;|my&nbsp;$ret&nbsp;=&nbsp;"";|.<br>
<br>
&nbsp;5.&nbsp;Cross&nbsp;Database&nbsp;Compatability<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;was&nbsp;originally&nbsp;written&nbsp;to&nbsp;work&nbsp;with&nbsp;MySQL&nbsp;and&nbsp;therefore&nbsp;took&nbsp;advantage<br>
&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;some&nbsp;of&nbsp;its&nbsp;features&nbsp;that&nbsp;aren't&nbsp;contained&nbsp;in&nbsp;other&nbsp;RDBMS&nbsp;software.&nbsp;&nbsp;These<br>
&nbsp;&nbsp;&nbsp;&nbsp;should&nbsp;be&nbsp;avoided&nbsp;in&nbsp;all&nbsp;new&nbsp;code.&nbsp;&nbsp;Examples&nbsp;of&nbsp;these&nbsp;features&nbsp;are&nbsp;enums&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;encrypt().<br>
<br>
&nbsp;6.&nbsp;Cross&nbsp;Platform&nbsp;Compatability<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;While&nbsp;Bugzilla&nbsp;was&nbsp;written&nbsp;to&nbsp;be&nbsp;used&nbsp;on&nbsp;Unix&nbsp;based&nbsp;systems&nbsp;(and&nbsp;Unix/Linux&nbsp;is<br>
&nbsp;&nbsp;&nbsp;&nbsp;still&nbsp;the&nbsp;only&nbsp;officially&nbsp;supported&nbsp;platform)&nbsp;there&nbsp;are&nbsp;many&nbsp;who&nbsp;desire/need&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;run&nbsp;Bugzilla&nbsp;on&nbsp;Microsoft&nbsp;Windows&nbsp;boxes.&nbsp;&nbsp;Whenever&nbsp;possible,&nbsp;we&nbsp;should&nbsp;strive<br>
&nbsp;&nbsp;&nbsp;&nbsp;not&nbsp;to&nbsp;make&nbsp;the&nbsp;lives&nbsp;of&nbsp;these&nbsp;people&nbsp;any&nbsp;more&nbsp;complicated&nbsp;and&nbsp;avoid&nbsp;doing&nbsp;things<br>
&nbsp;&nbsp;&nbsp;&nbsp;that&nbsp;break&nbsp;Bugzilla's&nbsp;ability&nbsp;to&nbsp;run&nbsp;on&nbsp;multiple&nbsp;operating&nbsp;systems.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="quicksearch.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="gfdl.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>The Quicksearch Utility</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>GNU Free Documentation License</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>