apply version 2.7 copyright
[jalview.git] / utils / jalopy / docs / misc.html
index 62e881d..22b4dca 100755 (executable)
@@ -1,7 +1,7 @@
 
 <!--
  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
  * 
  * This file is part of Jalview.
  * 
  * 
  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
 -->
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+  <html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>4.3.13.&nbsp;Misc</title><link rel="stylesheet" href="site.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="manual.html" title="Jalopy User Manual"><link rel="up" href="printer.html" title="4.3.&nbsp;Printer"><link rel="previous" href="sorting.html" title="4.3.12.&nbsp;Sorting"><link rel="next" href="inspector.html" title="4.4.&nbsp;Code Inspector"><link rel="preface" href="dedication.html" title="Dedication"><link rel="preface" href="acknowledge.html" title="Acknowledgements"><link rel="preface" href="introduction.html" title="Introduction"><link rel="part" href="part-core.html" title="Part&nbsp;I.&nbsp;Jalopy core"><link rel="chapter" href="installation.html" title="Chapter&nbsp;1.&nbsp;Installation"><link rel="chapter" href="build.html" title="Chapter&nbsp;2.&nbsp;Building"><link rel="chapter" href="usage.html" title="Chapter&nbsp;3.&nbsp;Usage"><link rel="chapter" href="settings.html" title="Chapter&nbsp;4.&nbsp;Settings"><link rel="part" href="part-plugins.html" title="Part&nbsp;II.&nbsp;Plug-ins"><link rel="chapter" href="plugin-ant.html" title="Chapter&nbsp;5.&nbsp;Ant Plug-in task"><link rel="chapter" href="plugin-console.html" title="Chapter&nbsp;6.&nbsp;Console Application"><link rel="chapter" href="plugin-eclipse.html" title="Chapter&nbsp;7.&nbsp;Eclipse Plug-in"><link rel="chapter" href="plugin-jbuilder.html" title="Chapter&nbsp;8.&nbsp;JBuilder OpenTool"><link rel="chapter" href="plugin-jdev.html" title="Chapter&nbsp;9.&nbsp;JDeveloper Extension"><link rel="chapter" href="plugin-jedit.html" title="Chapter&nbsp;10.&nbsp;jEdit Plug-in"><link rel="chapter" href="plugin-netbeans.html" title="Chapter&nbsp;11.&nbsp;NetBeans/Sun ONE Studio module"><link rel="appendix" href="dependencies.html" title="Appendix&nbsp;A.&nbsp;Library Dependencies"><link rel="appendix" href="license-bsd.html" title="Appendix&nbsp;B.&nbsp;The Jalopy BSD License"><link rel="appendix" href="license-antlr.html" title="Appendix&nbsp;C.&nbsp;ANTLR SOFTWARE RIGHTS"><link rel="appendix" href="license-apache.html" title="Appendix&nbsp;D.&nbsp;The Apache Software License, Version 1.1"><link rel="appendix" href="license-gnu.html" title="Appendix&nbsp;E.&nbsp;GNU GENERAL PUBLIC LICENSE Version 2, June 1991"><link rel="appendix" href="license-gnu-doc.html" title="Appendix&nbsp;F.&nbsp;GNU Free Documentation License Version 1.1, March 2000"><link rel="appendix" href="license-common-public.html" title="Appendix&nbsp;G.&nbsp;Common Public License Version 1.0"><link rel="appendix" href="license-sun-public.html" title="Appendix&nbsp;H.&nbsp;SUN PUBLIC LICENSE Version 1.0"><link rel="index" href="ix01.html" title="Index"><link rel="subsection" href="misc.html#misc-misc" title="4.3.13.1.&nbsp;Misc"><link rel="subsection" href="misc.html#misc-history" title="4.3.13.2.&nbsp;History"><link rel="subsection" href="misc.html#misc-backup" title="4.3.13.3.&nbsp;Backup"><link rel="subsection" href="misc.html#misc-threads" title="4.3.13.4.&nbsp;Threads">
+      <meta name="description" content="Jalopy Java Source Code Formatter Beautifier Pretty Printer"> 
+      <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" l gen true for "http://jalopy.sf.net" r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://jalopy.sf.net" r (n 0 s 0 v 0 l 0))'> 
+    </head><body id="toppage" bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table width="700" border="0" cellpadding="0" cellspacing="0" align="left"><tbody><tr><td><table cellpadding="0" cellspacing="0" width="100%" style="border:1px solid #336699"><tbody><tr><td height="16"></td></tr><tr><td bgcolor="#3399cc" height="1"></td></tr><tr style="border:none"><td style="border:none"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="logo">JALOPY</td><td class="sublogo" valign="bottom">Java Source Code Formatter Beautifier Pretty Printer</td></tr></tbody></table></td></tr><tr><td bgcolor="#3399cc" height="1"></td></tr><tr><td height="10"></td></tr><tr><td bgcolor="#ff8000" height="4"></td></tr><tr><td height="20" bgcolor="#336699" style="color:#ffffff;padding-left:10px"><a href="./index.html" class="navlink">Overview</a> &#149;
+                    <a href="./download.html" class="navlink">Download</a> &#149;
+                    <a href="./docs.html" class="navlink">Documentation</a> &#149;
+                    <a href="./plugins.html" class="navlink">Plug-ins</a> &#149;
+                    <a href="./links.html" class="navlink">Links</a> &#149;
+                    <a href="./contact.html" class="navlink">Contact</a></td></tr><tr><td height="1" bgcolor="#ffffff"></td></tr></tbody></table></td></tr><tr valign="top"><td valign="top" bgcolor="#ffffff"><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td height="20" bgcolor="#faebd7" style="padding-left:15px"><a href="./features.html" class="navlink2">Features</a> |
+                    <a href="./history.html" class="navlink2">History</a> |
+                    <a href="./manual.html" class="navlink2">Manual</a> |
+                    <a href="./faq.html" class="navlink2">FAQ</a> |
+                    <a href="./api/index.html" class="navlink2">Javadoc</a></td></tr><tr><td height="20" bgcolor="#ffffff"></td></tr><tr><td bgcolor="#eeeecc" height="17" align="right" style="font-size:10px;padding-right:3px">
+                    This page generated: <strong>June 8 2004</strong></td></tr></tbody></table><table border="0" width="100%" cellspacing="0" cellpadding="5"><tr><td><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.3.13.&nbsp;Misc</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sorting.html">Prev</a>&nbsp;</td><th width="60%" align="center">4.3.&nbsp;Printer</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="inspector.html">Next</a></td></tr></table><hr></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="misc"></a>4.3.13.&nbsp;Misc</h3></div></div><div></div></div><p>
+Lets you control miscellaneous settings that doesn't fit elsewhere.
+</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="misc-misc"></a>4.3.13.1.&nbsp;Misc</h4></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a name="paren-add"></a>
+Insert expression parentheses
+</p><a class="indexterm" name="d0e4907"></a><a class="indexterm" name="d0e4912"></a><p>
+It is always good advise to use more parentheses than you think you need. They
+may not be needed, but they add clarity and don't cost anything.
+</p><div class="example"><a name="ex-misc-expr"></a><p class="title"><b>Example&nbsp;4.150.&nbsp;How is this expression evaluated?</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">
+int result = 12 + 4 % 3 * 7 / 8;
+</pre></td></tr></table></div><p></p><div class="example"><a name="ex-misc-expr-continued"></a><p class="title"><b>Example&nbsp;4.151.&nbsp;How is this expression evaluated? (continued)</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">
+int result = 12 + ((4 % 3 * 7) / 8);
+</pre></td></tr></table></div><p></p></li><li><p><a name="misc-insert-uid"></a>
+Insert serial version UID
+</p><a class="indexterm" name="d0e4932"></a><p>
+Common sense dictates to declare an explicit serial version UID in every
+serializable class to eliminate the serial version UID as a potential source
+of incompatibility (with the additional benefit of a small performance gain).
+If this switch is enabled and the class directly dereives from either
+<tt class="filename">java.io.Serializable</tt> or <tt class="filename">java.io.Externalizable</tt>,
+Jalopy computes and inserts a serial version UID for the class.
+</p><p>
+For this feature to work, the class that has its serial version UID computed
+needs to be available on the classpath.
+</p></li><li><p><a name="misc-logging-conditional"></a>
+Insert logging conditional
+</p><p>
+Typically, logging systems have a method that submits a logging message like
+
+</p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="screen">
+logger.debug("some message: " + someVar);
+</pre></td></tr></table><p>
+</p><p>
+This is fine, but if the debug level is set such that this message will
+<span class="emphasis"><em>NOT</em></span> display, then time is wasted doing the string marshalling.
+</p><p>
+Thus, the preferred way to do this is
+
+</p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="screen">
+if (logger.isDebugEnabled()) {
+    logger.debug("some message: " + someVar);
+}
+</pre></td></tr></table><p>
+
+which will only use CPU time if the log message is needed. Enabling this switch
+will ensure that every logging call with the debug level set will be enclosed with
+the conditional expression.
+</p><p>
+Use this feature with care! The current implementation only supports the Jakarta
+Log4J toolkit and is somewhat weak in that every method call called
+<i class="firstterm">debug</i> is treated as a logging call which could be incorrect
+in your application. However, it works fine for the <i class="firstterm">l7dlog</i> calls.
+</p></li><li><p><a name="misc-trailing-newline"></a>
+Insert trailing newline
+</p><p>
+If enabled, Jalopy inserts an empty line at the end of every file. This may
+help to avoid problems with certain text formatters and processors.
+</p><p>
+Note that Jalopy always inserts at least one empty line after footers, so there
+is no real need (but it doesn't hurt) to check the mark in case footer insertion
+will be performed (see <a href="footer.html" title="4.3.11.&nbsp;Footer">Section&nbsp;4.3.11, &#8220;Footer&#8221;</a>)
+</p></li><li><p><a name="misc-array-brackets"></a>
+Array brackets after identifiers
+</p><p>
+Lets you choose where the brackets of array types should be placed.
+</p><p>
+By default, Jalopy prints the square brackets right after the array type.
+</p><div class="example"><a name="ex-misc-array-brackets"></a><p class="title"><b>Example&nbsp;4.152.&nbsp;Array brackets after type</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">
+int[] a;
+</pre></td></tr></table></div><p>
+But C/C++ programmers may expect them to appear after the identifier.
+</p><div class="example"><a name="ex-misc-array-brackets-identifier"></a><p class="title"><b>Example&nbsp;4.153.&nbsp;Array brackets after identifier</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">
+int a[];
+</pre></td></tr></table></div><p></p></li><li><p>
+Force formatting
+</p><p>
+Jalopy can keep track of which files have been formatted previously.
+See <a href="misc.html#misc-history" title="4.3.13.2.&nbsp;History">Section&nbsp;4.3.13.2, &#8220;History&#8221;</a> below. If History is enabled, Jalopy will
+exclude files that have a modification date coincident with the last formatting.
+However, you can override this history check to force a format. For example,
+you might need to update the copyright notice for the whole code base. Enabling
+this switch ensures that all source files are always be formatted. Note that
+this switch is only meaningful if the history feature is enabled.
+</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="misc-history"></a>4.3.13.2.&nbsp;History</h4></div></div><div></div></div><a class="indexterm" name="d0e5010"></a><p>
+The history feature offers a way to optimize the speed at which Jalopy processes
+of a group of files repeatedly. Using history, Jalopy is able to track file
+modifications between successive invocations, and only format those source
+files which have actually changed, or which weren't processed previously.
+This can save a huge amount of execution time for a project that is formatted
+repeatedly over time. There are two methods for keeping history.
+</p><div class="itemizedlist"><ul type="disc"><li><p><a name="history-file"></a>
+Use history file
+</p><a class="indexterm" name="d0e5019"></a><a class="indexterm" name="d0e5024"></a><p>
+If you can't get along with a history header comment at the top of each source
+file, but would like historical optimization, the file-based approach may work
+for you. The history information of previous formatting will be saved in a file
+<tt class="filename">history.dat</tt> under the Jalopy settings directory.
+</p><p>
+Note that this file will grow over time, especially if one manages several big
+projects. So the history file could become quite huge. As all history entries
+are read into memory at startup, it could eat up quite a bit of memory space.
+Therefore a little history viewer is provided which enables you to selectively
+remove obsolete entries.
+</p><p>
+In order to effectively use formatting of a project with several developers it is
+nice to be able to only format files which have changed. There are three methods of
+working out if a file has changed provided in a drop down. Timestamp will use the
+modification time of the file, this does not work very well with source control
+and multiple developers. There are two standard checksums available. These
+work by taking a checksum of the file and comparing it to the one in the history file.
+If this checksum is different, the file is parsed and formatted in memory and a new
+checksum calculated. If the new checksum is different than the checksum for the
+unformatted file, it is written to disk. This stops files that have just been updated
+from source control from having being formatted (and timestamps updated).
+</p><p>
+Use the <span><b class="guibutton">View...</b></span> button to display the history viewer. You
+can selectively remove entries via the popup menu.
+</p></li><li><p><a name="history-comment"></a>
+Use history comments
+</p><a class="indexterm" name="d0e5044"></a><a class="indexterm" name="d0e5049"></a><a class="indexterm" name="d0e5054"></a><p>
+Jalopy will insert a small comment in the first line of every source file.
+The comment encodes the time a file was last formatted along with the package
+name of the file. This method is precise and relatively foolproof but does not work well
+with SCM tools.
+</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="misc-backup"></a>4.3.13.3.&nbsp;Backup</h4></div></div><div></div></div><p>
+For security reasons Jalopy creates a backup copy of the currently
+processed file so it can be restored in case a severe error occured during the
+formatting process. The original file is stored in the backup directory and normally
+deleted after the newly formatted file has been successfully written.
+</p><div class="itemizedlist"><ul type="disc"><li><p>
+Level
+</p><p>
+The backup level defines how many numbered backups should be retained (up to 30).
+The default is to never hold any backups.
+</p></li><li><p>
+Directory
+</p><p>
+Specifies where file backups are stored. You should leave this setting untouched
+in order to make your code convention portable across different systems and platforms.
+</p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="misc-threads"></a>4.3.13.4.&nbsp;Threads</h4></div></div><div></div></div><p>
+Jalopy, more precisely the provided Plug-ins, are multi-threaded. On
+multi-processor systems the work can be divided onto several processors to
+speed up processing.
+</p><div class="itemizedlist"><ul type="disc"><li><p>
+Number
+</p><p>
+Specifies the number of processing threads to be used. This setting should be
+equal to the number of processors your system has.
+</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sorting.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="printer.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="inspector.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.3.12.&nbsp;Sorting&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="manual.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;4.4.&nbsp;Code Inspector</td></tr></table></div></td></tr></table></td></tr><tr><td bgcolor="#eeeecc" height="17" style="font-size:9px;padding-left:5px"><a href="#toppage">to top</a></td></tr><tr><td height="30"><br></td></tr><tr><td height="3"></td></tr><tr><td bgcolor="#336699" height="1"></td></tr><tr><td height="1"></td></tr><tr><td bgcolor="#336699" height="16"></td></tr><tr><td bgcolor="#ff9966" height="4"></td></tr><tr><td class="footer" align="center" height="15" valign="middle">
+            Copyright &copy; 2001-2004, <a class="footer" href="./contact.html">Marco Hunsicker</a>. All rights reserved. Hosted by <a href="http://sourceforge.net">SourceForge.net</a></td></tr></tbody></table><img src="http://sourceforge.net/sflogo.php?group_id=45216&amp;type=1" width="1" height="1" border="0" hspace="0" vspace="0" alt=""></body></html>