mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 03:05:34 +00:00
416 lines
7.6 KiB
HTML
416 lines
7.6 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
|
|
> The following is a guide for reviewers when checking code into Bugzilla's
|
|
CVS repostory at mozilla.org. If you wish to submit patches to Bugzilla,
|
|
you should follow the rules and style conventions below. Any code that
|
|
does not adhere to these basic rules will not be added to Bugzilla's
|
|
codebase.
|
|
</P
|
|
><DIV
|
|
CLASS="SECTION"
|
|
><H2
|
|
CLASS="SECTION"
|
|
><A
|
|
NAME="AEN2495"
|
|
>D.5.1. Things that have caused problems and should be avoided</A
|
|
></H2
|
|
><P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
> Usage of variables in Regular Expressions
|
|
</P
|
|
><P
|
|
> It is very important that you don't use a variable in a regular
|
|
expression unless that variable is supposed to contain an expression.
|
|
This especially applies when using grep. You should use:
|
|
</P
|
|
><P
|
|
> <TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="90%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>grep ($_ eq $value, @array);
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
</P
|
|
><P
|
|
> -- NOT THIS --
|
|
</P
|
|
><P
|
|
> <TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="90%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>grep (/$value/, @array);
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
</P
|
|
><DIV
|
|
CLASS="NOTE"
|
|
><P
|
|
></P
|
|
><TABLE
|
|
CLASS="NOTE"
|
|
WIDTH="90%"
|
|
BORDER="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="25"
|
|
ALIGN="CENTER"
|
|
VALIGN="TOP"
|
|
><IMG
|
|
SRC="../images/note.gif"
|
|
HSPACE="5"
|
|
ALT="Note"></TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
><P
|
|
> If you need to use a non-expression variable inside of an expression, be
|
|
sure to quote it properly (using <TT
|
|
CLASS="FUNCTION"
|
|
>\Q..\E</TT
|
|
>).
|
|
</P
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></LI
|
|
></OL
|
|
></DIV
|
|
><DIV
|
|
CLASS="SECTION"
|
|
><H2
|
|
CLASS="SECTION"
|
|
><A
|
|
NAME="AEN2509"
|
|
>D.5.2. Coding Style for Bugzilla</A
|
|
></H2
|
|
><P
|
|
> While it's true that not all of the code currently in Bugzilla adheres to
|
|
this (or any) styleguide, it is something that is being worked toward. Therefore,
|
|
we ask that all new code (submitted patches and new files) follow this guide
|
|
as closely as possible (if you're only changing 1 or 2 lines, you don't have
|
|
to reformat the entire file :).
|
|
</P
|
|
><P
|
|
> The Bugzilla development team has decided to adopt the perl style guide as
|
|
published by Larry Wall. This giude can be found in <SPAN
|
|
CLASS="QUOTE"
|
|
>"Programming
|
|
Perl"</SPAN
|
|
> (the camel book) or by typing <B
|
|
CLASS="COMMAND"
|
|
>man perlstyle</B
|
|
> at
|
|
your favorite shell prompt.
|
|
</P
|
|
><P
|
|
> What appears below if a brief summary, please refer to the perl style
|
|
guide if you don't see your question covered here.
|
|
</P
|
|
><P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
> Whitespace
|
|
</P
|
|
><P
|
|
> Bugzilla's prefered indentation is 4 spaces (no tabs, please).
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> Curly braces.
|
|
</P
|
|
><P
|
|
> The opening brace of a block should be on the same line as the statement
|
|
that is causing the block and the closing brace should be at the same
|
|
indentation level as that statement, for example:
|
|
</P
|
|
><P
|
|
> <TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="90%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>if ($var) {
|
|
print "The variable is true";
|
|
}
|
|
else {
|
|
print "Try again";
|
|
}
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
</P
|
|
><P
|
|
> -- NOT THIS --
|
|
</P
|
|
><P
|
|
> <TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="90%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
>if ($var)
|
|
{
|
|
print "The variable is true";
|
|
}
|
|
else
|
|
{
|
|
print "Try again";
|
|
}
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> File Names
|
|
</P
|
|
><P
|
|
> File names for bugzilla code and support documention should be legal across
|
|
multiple platforms. <TT
|
|
CLASS="COMPUTEROUTPUT"
|
|
>\ / : * ? " < ></TT
|
|
>
|
|
and <TT
|
|
CLASS="COMPUTEROUTPUT"
|
|
>|</TT
|
|
> are all illegal characters for filenames
|
|
on various platforms. Also, file names should not have spaces in them as they
|
|
can cause confusion in CVS and other mozilla.org utilities.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> Variable Names
|
|
</P
|
|
><P
|
|
> If a variable is scoped globally (<TT
|
|
CLASS="COMPUTEROUTPUT"
|
|
>$::variable</TT
|
|
>)
|
|
its name should be descriptive of what it contains. Local variables can be named
|
|
a bit looser, provided the context makes their content obvious. For example,
|
|
<TT
|
|
CLASS="COMPUTEROUTPUT"
|
|
>$ret</TT
|
|
> could be used as a staging variable for a
|
|
routine's return value as the line <TT
|
|
CLASS="COMPUTEROUTPUT"
|
|
>return $ret;</TT
|
|
>
|
|
will make it blatantly obvious what the variable holds and most likely be shown
|
|
on the same screen as <TT
|
|
CLASS="COMPUTEROUTPUT"
|
|
>my $ret = "";</TT
|
|
>.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> Cross Database Compatability
|
|
</P
|
|
><P
|
|
> Bugzilla was originally written to work with MySQL and therefore took advantage
|
|
of some of its features that aren't contained in other RDBMS software. These
|
|
should be avoided in all new code. Examples of these features are enums and
|
|
<TT
|
|
CLASS="FUNCTION"
|
|
>encrypt()</TT
|
|
>.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> Cross Platform Compatability
|
|
</P
|
|
><P
|
|
> While Bugzilla was written to be used on Unix based systems (and Unix/Linux is
|
|
still the only officially supported platform) there are many who desire/need to
|
|
run Bugzilla on Microsoft Windows boxes. Whenever possible, we should strive
|
|
not to make the lives of these people any more complicated and avoid doing things
|
|
that break Bugzilla's ability to run on multiple operating systems.
|
|
</P
|
|
></LI
|
|
></UL
|
|
></DIV
|
|
></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
|
|
> |