1b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<html>
3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<head>
4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
5b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<meta http-equiv="content-style-type" content="text/css">
6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<link rel="stylesheet" type="text/css" href="style.css">
7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<title>ProGuard Quality</title>
82270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom</head>
92270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom<body>
102270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom
11b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<script type="text/javascript" language="JavaScript">
12b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<!--
13b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangif (window.self==window.top)
142270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom  document.write('<a class="largebutton" target="_top" href="index.html#quality.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
15b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang//-->
16b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang</script>
172270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom<noscript>
182270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom<a class="largebutton" target="_top"  href="index.html#quality.html">ProGuard index</a>
192270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom<a class="largebutton" target="_top"  href="http://www.saikoa.com/dexguard">DexGuard</a>
202270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom<a class="largebutton" target="_top"  href="http://www.saikoa.com/">Saikoa</a>
212270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
222270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom</noscript>
23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato
24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<h2>Quality</h2>
25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato
26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoIn order to get a feel for the quality of the <b>ProGuard</b> code, it is run
27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratothrough a regular automatic build process. This process produces numerous
28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratostatistics on the source code, Java lint comments, Java documentation
29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratocomments, the Java documentation itself, html lint comments on the Java
30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratodocumentation, spell checks, compilation results, an output jar, dead code
31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoanalysis, a shrunk and obfuscated jar (using ProGuard itself!), test runs with
32b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratomemory and performance analyses, etc. Most analyses are produced using freely
33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoavailable tools. The results are poured into a convenient set of web pages
34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratousing bash/sed/awk scripts. You're welcome to have a look at an uploaded
35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratosnapshot of one of these runs:
36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<p>
37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<center><a href="http://proguard.sourceforge.net/quality/"
38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratotarget="other">Automated Code Analysis and Testing Pages</a> (at <a
39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratohref="http://sourceforge.net/projects/proguard/"
40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratotarget="other">SourceForge</a>)</center>
41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<p>
42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoThe pages will appear in a new window, which you probably want to view at
43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofull-screen size.
44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<p>
45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato
46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoIn addition, <b>ProGuard</b> is tested against a constantly growing test suite
472270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom(more than 1800 tests at this time of writing). These small programs contain a
48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratowide range of common and uncommon constructs, in order to detect any regression
49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoproblems as soon as possible.
50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato
51b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang<hr />
52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato<address>
532270795fbe0b277bfd49f40950ecaa78583175ccBrian CarlstromCopyright &copy; 2002-2014
542270795fbe0b277bfd49f40950ecaa78583175ccBrian Carlstrom<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</address>
56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</body>
57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato</html>
58