<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-style-type" content="text/css">
<link rel="stylesheet" type="text/css" href="style.css">
<title>ProGuard Quality</title>
<script type="text/javascript" language="JavaScript">
<!--
if (window.self==window.top)
  window.top.location.replace("index.html#"+window.location.pathname+window.location.hash);
else {
  var hash="#"+window.location.pathname.replace(window.top.location.pathname.replace("index.html", ""), "");
  if (window.top.location.hash!=hash)
    window.top.location.hash=hash;
}
//-->
</script>
</head>
<body>

<h2>Quality</h2>

In order to get a feel for the quality of the <b>ProGuard</b> code, it is run
through a regular automatic build process. This process produces numerous
statistics on the source code, Java lint comments, Java documentation
comments, the Java documentation itself, html lint comments on the Java
documentation, spell checks, compilation results, an output jar, dead code
analysis, a shrunk and obfuscated jar (using ProGuard itself!), test runs with
memory and performance analyses, etc. Most analyses are produced using freely
available tools. The results are poured into a convenient set of web pages
using bash/sed/awk scripts. You're welcome to have a look at an uploaded
snapshot of one of these runs:
<p>
<center><a href="http://proguard.sourceforge.net/quality/"
target="other">Automated Code Analysis and Testing Pages</a> (at <a
href="http://sourceforge.net/projects/proguard/"
target="other">SourceForge</a>)</center>
<p>
The pages will appear in a new window, which you probably want to view at
full-screen size.
<p>

In addition, <b>ProGuard</b> is tested against a constantly growing test suite
(more than 1500 tests at this time of writing). These small programs contain a
wide range of common and uncommon constructs, in order to detect any regression
problems as soon as possible.

<hr />
<noscript><div><a target="_top" href="index.html" class="button">Show menu</a></div></noscript>
<address>
Copyright &copy; 2002-2013
<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a>.
</address>
</body>
</html>
