project.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <!--
  5. Software Index, Copyright 2010, Software Index Project Team
  6. Link: http://swi.sourceforge.net
  7. This file is part of Software Index Tool.
  8. Software Index is free software: you can redistribute it and/or modify
  9. it under the terms of the GNU General Public License as published by
  10. the Free Software Foundation, version 3 of the License.
  11. Software Index is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. GNU General Public License for more details.
  15. You should have received a copy of the GNU General Public License
  16. along with Software Index. If not, see <http://www.gnu.org/licenses/>.
  17. -->
  18. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-5" />
  19. <title>Software Index Project</title>
  20. <link href="style.css" rel="stylesheet" type="text/css" />
  21. </head>
  22. <body>
  23. <table border="0" align="center" cellpadding="0" cellspacing="0" width="1000">
  24. <tr>
  25. <td>&nbsp;</td>
  26. <td valign="middle">&nbsp;</td>
  27. </tr>
  28. <tr>
  29. <td width="350"><img src="images/logo_project.jpg" alt="Software Index Project Page" width="350" height="128" /></td>
  30. <td valign="bottom"> <div align="right">
  31. <p><a href="http://sourceforge.net/projects/swi"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=275605&amp;type=10" alt="Get Software Index at SourceForge.net. Fast, secure and Free Open Source software downloads" width="80" height="15" border="0" /></a></p>
  32. <p>&nbsp;</p>
  33. <p><a href="#Description">Overview</a> | <a href="#Download">Download &amp; Installation </a> | <a href="#License">License</a> | <a href="#Documentation">Documentation</a> | <a href="#Getsupport">Get support </a>| <a href="#Fordevelopers">For developers</a></p>
  34. </div></td>
  35. </tr>
  36. <tr>
  37. <td colspan="2"><hr></td>
  38. </tr> <tr>
  39. <td colspan="2" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="10">
  40. <tr>
  41. <td valign="top"><h3><a id="Description"></a>Overview</h3>
  42. <p><span class="normalImportance">Software Index </span>measures, reports and validates software statistic,
  43. searches for duplications, scans for errors, 'coding style' violations
  44. and occasions of broken design patterns which are defined by your design team.</p>
  45. <h4>The list of collected statistics:</h4>
  46. <ul>
  47. <li>Number of <span class="normalImportance">executable symbols</span> and <span class="normalImportance">lines</span> </li>
  48. <li>Number of <span class="normalImportance">symbols</span> and <span class="normalImportance">lines in comments</span></li>
  49. <li>Number of <span class="normalImportance">symbols</span> and<span class="normalImportance"> lines in initial source file</span></li>
  50. <li>Number of <span class="normalImportance">lines in specific comments</span><br />
  51. (header descriptions before functions) </li>
  52. <li>Number of <span class="normalImportance">symbols in name</span> of a function </li>
  53. <li>Number of <span class="normalImportance">blocks</span></li>
  54. <li>Maximum <span class="normalImportance">indent level</span> (depth level) </li>
  55. <li><span class="normalImportance">Cyclomatic complexity</span> (McCabe's / Myer's) index </li>
  56. <li>Number of <span class="normalImportance">functions, files, modules</span></li>
  57. <li>Number of symbols in <span class="normalImportance">duplicated fragments</span></li>
  58. <li><span class="normalImportance">Code coverage</span> indexes<br />
  59. (line coverage, branch coverage and entry/exit coverage data from external gcov tool) </li>
  60. </ul>
  61. <h4>Parsing, scaning and searching can be performed for the different content:</h4>
  62. <ul>
  63. <li><span class="normalImportance">initial</span> - the initial source content</li>
  64. <li> <span class="normalImportance">code</span> - the initial code (without comments)</li>
  65. <li> <span class="normalImportance">comments</span> - comments only (no code)</li>
  66. <li> <span class="normalImportance">no preprocessor</span> - preprocessor strings excluded (without comments and preprocessor)</li>
  67. <li> <span class="normalImportance">no strings</span> - strings excluded (without comments and strings)</li>
  68. <li> <span class="normalImportance">purified</span> - strings and preprocessor excluded (without comments, strings and preprocessor)</li>
  69. <li> <span class="normalImportance">comment header</span> - comments before function's header</li>
  70. <li> <span class="normalImportance">function's name</span> - name of a function</li>
  71. <li> <span class="normalImportance">function's head</span> - purified function's header, no body</li>
  72. <li> <span class="normalImportance">function's body</span> - purified function's body, no header</li>
  73. </ul>
  74. <h4>Every counter is collected per:</h4>
  75. <ul>
  76. <li>function</li>
  77. <li> file</li>
  78. <li>module</li>
  79. <li>project</li>
  80. </ul>
  81. <h4>Single indexes and indexes for distributions are collected:</h4>
  82. <ul>
  83. <li><span class="normalImportance">exact</span> value</li>
  84. <li> <span class="normalImportance">average</span> value within a distribution</li>
  85. <li> <span class="normalImportance">minimum</span> value within a distribution</li>
  86. <li> <span class="normalImportance">maximum</span> value within a distribution</li>
  87. <li><span class="normalImportance">sum</span> of values within a distribution</li>
  88. </ul>
  89. <h4>Validation rules can be applied to the different content:</h4>
  90. <ul>
  91. <li><span class="normalImportance">added</span> functions (objects)</li>
  92. <li> <span class="normalImportance">removed</span> functions (objects)</li>
  93. <li> <span class="normalImportance">modified</span> functions (objects)</li>
  94. <li><span class="normalImportance">cloned</span> functions (objects)</li>
  95. <li><span class="normalImportance">unmodified</span> functions (objects)</li>
  96. </ul>
  97. <h4>Internal tools helps to adapt Software Index for your specific needs:</h4>
  98. <ul>
  99. <li><span class="normalImportance">code preprocessor</span>: simplifies the code parsing and scaning with preprocessor definitions</li>
  100. <li> <span class="normalImportance">code scanner</span>: similar 'grep' tool, helps to find occasion of 'bad' coding style/formating and detect broken rules which defined by your design team, has flexible suppress methods </li>
  101. <li><span class="normalImportance">code indexer</span>: collect the statistics, there 3 levels of severity (info, notice, warning) for limits which are easily configurable, has flexible suppress methods</li>
  102. <li><span class="normalImportance">searcher of duplicated fragments</span>: helps to find and reduce duplication in your source code</li>
  103. <li><span class="normalImportance">report converter</span>: processes the final report in XML format, filters the information according configuration and dumps the info messages, notices, warnings and erros to file and stderr stream</li>
  104. </ul>
  105. <h4>Supported languages:</h4>
  106. <ul>
  107. <li>C (stable version) </li>
  108. <li>C++ (beta version) </li>
  109. </ul>
  110. <h4>Limitations:</h4>
  111. <ul>
  112. <li>Parser does not detect functions (C language) with declarations of local variables outside of function's body. However, it is not a problem for a major part of software products. The example below demostrates problematic formatting/style:</li>
  113. </ul>
  114. <table width="80%" border="0" align="center" cellpadding="2" cellspacing="2">
  115. <tr>
  116. <td width="50%">This function is <span class="highImportance">not detectable</span> by Software Index. </td>
  117. <td width="50%">This function is <span class="normalImportance">parsable</span>. </td>
  118. </tr>
  119. <tr>
  120. <td><pre>int <strong>getMax</strong>(int* array, int length)
  121. <span class="highImportance"> int i = 0;
  122. int curMax;</span>
  123. <strong>{</strong>
  124. /* ... */
  125. <strong>}</strong></pre> </td>
  126. <td><pre>int <strong>getMax</strong>(int* array, int length)
  127. <strong>{</strong>
  128. <span class="normalImportance"> int i = 0;
  129. int curMax;</span>
  130. /* ... */
  131. <strong>}</strong></pre>
  132. </td>
  133. </tr>
  134. </table>
  135. <ul>
  136. <li>Comments inside preprocessor strings are not acceptable (C/C++ languages). Otherwise, some code can be unrecognizable by Software Index.<br />
  137. </li>
  138. </ul>
  139. <table width="80%" border="0" align="center" cellpadding="2" cellspacing="2">
  140. <tr>
  141. <td width="50%">This code is <span class="highImportance">not recognizable </span> by Software Index. </td>
  142. <td width="50%">This code is <span class="normalImportance">parsable</span>.</td>
  143. </tr>
  144. <tr>
  145. <td><pre>#define <strong>GET_MAX</strong>(a, b) \
  146. <span class="highImportance"> /* \
  147. * This macros returns \
  148. * maximum from a and b \
  149. */ \
  150. </span> ((a &gt; b) ? a : b)</pre>
  151. </td>
  152. <td><pre><span class="normalImportance">/*
  153. * This macros returns
  154. * maximum from a and b
  155. */
  156. </span>#define <strong>GET_MAX</strong>(a, b) \
  157. ((a &gt; b) ? a : b)</pre>
  158. </td>
  159. </tr>
  160. </table>
  161. <ul>
  162. <li>Interface with gcov tool is not tested for C++ language.</li>
  163. </ul>
  164. <h3><a id="Download"></a>Download &amp; Installation</h3>
  165. <p>For the installation of the <span class="normalImportance">Software Index</span> <a href="http://sourceforge.net/projects/swi/files/">download</a> the archive with all required modules and unpack it to some folder. Also, you have got an option to get the <a href="http://swi.svn.sourceforge.net/viewvc/swi/">source code</a> from the version conrol sytem.</p>
  166. <p><em class="highImportance">Warning:</em> <span class="normalImportance">Software Index</span> has an internal tool (dupindex) which should be compiled for the target platform.
  167. By default, the distributable archive includes the compiled binary for PC Windows (x86) platform.
  168. Recompile it if you need (only one file: dupindex.cpp), using g++ or some other C++ compiler for your specific platform. There is a project configuration file for users of Microsoft Visual Studio 2008. There is Makefile for users of gmake and g++ tools. </p>
  169. <h4>Prerequisites:</h4>
  170. <ul>
  171. <li>Perl Runtime Environment (version 5.6.x or later)</li>
  172. <li>Perl modules (usualy, they are all included to the standard installation package of Perl engine):
  173. <ul>
  174. <li>Cwd</li>
  175. <li>Pod::Usage</li>
  176. <li> Data::Dumper</li>
  177. <li> FileHandle</li>
  178. <li>IPC::Open3</li>
  179. <li> XML::Simple (included to the distributable archive with <span class="normalImportance">Software Index</span>)</li>
  180. <li> String::CRC::Cksum (included to the distributable archive with <span class="normalImportance">Software Index</span>)</li>
  181. </ul>
  182. </li>
  183. <li>gcov (optional, it is needed if you like to collect coverage statistic)</li>
  184. </ul>
  185. <h3><a name="License" id="Download"></a>License</h3>
  186. <p> This program is free software; you can redistribute it and/or modify
  187. it under the terms of the GNU General Public License as published by
  188. the Free Software Foundation; version 3 of the License.</p>
  189. <p> This program is distributed in the hope that it will be useful,
  190. but WITHOUT ANY WARRANTY; without even the implied warranty of
  191. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  192. GNU General Public License for more details.</p>
  193. <p> You should have received a copy of the GNU General Public License along
  194. with the <span class="normalImportance">Software Index</span>; if not, contact <a href="mailto:avkonst@users.sourceforge.net">Project Administrator</a> and write to the Free Software Foundation, Inc.,
  195. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</p>
  196. <h3><a id="Documentation"></a>Documentation</h3>
  197. <p>The context help is available by:</p>
  198. <pre>&gt; perl swi_main.pl --help</pre>
  199. <p>The sample/description of the configuration file is available by link:</p>
  200. <pre><a href="http://swi.svn.sourceforge.net/viewvc/swi/swi_config_sample.xml?view=markup" target="_blank">http://swi.svn.sourceforge.net/viewvc/swi/swi_config_sample.xml?view=markup</a></pre>
  201. <p> In the command line context, it is accessable by:</p>
  202. <pre>&gt; perl swi_main.pl --sample</pre>
  203. <h3><a id="Getsupport"></a>Get support</h3>
  204. <p>The best way to get help is by <a href="https://sourceforge.net/tracker/?func=add&amp;group_id=275605&amp;atid=1170878">creating a new item</a> in the 'Request Tracker'.</p>
  205. <h4>Alternatives</h4>
  206. <p>If you believe the project may have a different support resource that would be better for submitting the particular issue, please consider the following alternatives:</p>
  207. <ul>
  208. <li><a href="mailto:avkonst@users.sourceforge.net">Mail to the Administrator</a> </li>
  209. <li><a href="https://sourceforge.net/sendmessage.php?touser=2608471">Mail to the Administrator using WEB form</a></li>
  210. <li><a href="https://sourceforge.net/tracker/?func=add&amp;group_id=275605&amp;atid=1170877">Create new bug report </a></li>
  211. <li><a href="https://sourceforge.net/tracker/?func=add&amp;group_id=275605&amp;atid=1170880">Create new feature request</a></li>
  212. </ul>
  213. <h4>Our time response</h4>
  214. <p><span class="normalImportance">Software Index</span> is used in real, time critical software development projects. It profiles software products which should work stably 24 hours a day, 7 days a week. As a result, we catch major portion of bugs ourself before the official release of new version of the <span class="normalImportance">Software Index</span>.</p>
  215. <p>In addition to this, please, notice that it is developed by enthusiasts in their free time. Thus, we can not guarantee the immediate response. However, we always try to process bug reports and support requests as soon as possible, prioritizing the support activities.</p>
  216. <h3><a id="Fordevelopers"></a>For developers</h3>
  217. <p>If you have troubleshooted the problem, prepared the correction and believe that it should be included to the official distributive, please create <a href="https://sourceforge.net/tracker/?func=add&amp;group_id=275605&amp;atid=1170879">new patch review request</a> and attach the Patch to the tracker.</p>
  218. <p><em>Note:</em> Patch files are simply Unified-Diff files showing the differences between your working copy and the base revision.</p>
  219. <h4>Join this project:</h4>
  220. <p>In order to participate in development activities, join this project:<br />
  221. please, contact the project administrators of this project, as shown on the <a href="http://sourceforge.net/projects/swi/"> project summary page</a>. </p>
  222. <h4> Get the source code:</h4>
  223. <p> Source code for this project may be available as <a href="http://sourceforge.net/projects/swi/files/">downloads</a> or through the Subversion SCM <a href="http://swi.svn.sourceforge.net/viewvc/swi/">repository</a> used by the project. </p>
  224. <h4>Beta testing:</h4>
  225. <p>You are very welcome to <a href="http://sourceforge.net/projects/swi/files/">download</a> beta versions and provide your feedback, reporting proposals and new issues in <a href="https://sourceforge.net/tracker/?group_id=275605&amp;atid=1170877">bug tracker</a> system used by the project.</p>
  226. <p>If you requested a feature, we are happy to deliver it to you firstly for beta testing before including to the final release version. </p>
  227. <h4>Update project web pages:</h4>
  228. <p> If you are a web page developer interested in this project, please consider reaching out to the project <a href="https://sourceforge.net/sendmessage.php?touser=2608471">Administrator</a> (per the &quot;Join this project&quot; section, above) to offer your assistance.</p></td>
  229. </tr>
  230. </table>
  231. <hr></td>
  232. </tr>
  233. <tr>
  234. <td colspan="2"><div align="center">
  235. <p align="right">Copyright <strong>&copy; </strong>2009 - 2010<br />
  236. <a href="mailto:avkonst@users.sourceforge.net"><span class="normalImportance">Software Index</span> Project</a></p>
  237. <p align="right">License: <a href="http://www.gnu.org/licenses/gpl.txt">GPL</a></p>
  238. <h3 align="right"></h3>
  239. </div></td>
  240. </tr>
  241. </table>
  242. <p></p>
  243. </body>
  244. </html>