.. -*- restructuredtext -*-

======================
PyLint To TUSAR plugin
======================

This is a PyLint__ plugin that enables a **TUSAR** output format. 

__ http://www.logilab.org/857

.. note:: **TUSAR** stands for *Thales Unified Sofware Analysis Report*.
   It is a generic XML metric format composed of 4 categories:
   
   *  Coverage
   *  Measures
   *  Test
   *  Violations
   
   **TUSAR** is defined by multiple XML Schema Definitions that can be found here__.
   
   __ https://svn.jenkins-ci.org/trunk/hudson/dtkit/dtkit-format/dtkit-tusar-model/src/main/resources/com/thalesgroup/dtkit/tusar/model/xsd/

For more information about **TUSAR**, please read `Jenkins wiki`__.

__ https://wiki.jenkins-ci.org/display/JENKINS/DTKit

Installation
============

You can install the ``pylint2tusar`` package with ``easy_install`` 
or ``pip``: ::

   $ easy_install pylint2tusar

Or with the windows installer available on this page.

.. attention:: ``pylint2tusar`` has a dependency to ``pylint``. If you don't use 
   ``easy_install`` or ``pip``, dependencies will not be installed automatically. 
   You will have to install them separately by hand.

Usage
=====

Once ``pylint2tusar`` is installed, you can invoke pylint and choose the **TUSAR**
output format: ::

   $ pylint --load-plugins=pylint2tusar --output-format=tusar <packages to analyse>
   No config file found, using default configuration
   <?xml version="1.0" encoding="utf-8"?>
   <tusar:tusar xmlns:duplications="http://www.thal......ions/v4">
     <violations:violations tool="pylint">
       <violations:file path="pylint2tusar\__init__.py">
         <violations:violation key="C0111" line="1" message="Missing docstring"/>
         <violations:violation key="C0111" line="21" message="Missing docstring"/>
         <violations:violation key="W0212" line="23" message="Access to a protected member"/>
       </violations:file>
       <violations:file path="pylint2tusar\reporter.py">
         <violations:violation key="C0301" line="30" message="Line too long (90/80)"/>
         <violations:violation key="C0301" line="31" message="Line too long (82/80)"/>
         <violations:violation key="C0301" line="33" message="Line too long (98/80)"/>
         <violations:violation key="C0301" line="73" message="Line too long (84/80)"/>
         <violations:violation key="C0301" line="87" message="Line too long (89/80)"/>
         <violations:violation key="C0301" line="93" message="Line too long (93/80)"/>
         <violations:violation key="C0301" line="104" message="Line too long (83/80)"/>
         <violations:violation key="C0111" line="1" message="Missing docstring"/>
         <violations:violation key="C0111" line="20" message="Missing docstring"/>
         <violations:violation key="C0111" line="69" message="Missing docstring"/>
         <violations:violation key="R0913" line="99" message="Too many arguments (6/5)"/>
         <violations:violation key="C0111" line="99" message="Missing docstring"/>
         <violations:violation key="W0613" line="99" message="Unused argument 'obj'"/>
         <violations:violation key="C0323" line="152" message="Operator not followed by a space"/>
       </violations:file>
     </violations:violations>
     <measures:measures tool="pylint">
       <duplications:duplications tool="pylint"/>
       <size:size tool="pylint">
         <size:resource type="PROJECT" value="">
           <size:measure key="statements" value="107"/>
           <size:measure key="lines" value="141"/>
           <size:measure key="ncloc" value="120"/>
           <size:measure key="files" value="2"/>
           <size:measure key="comment_lines" value="14"/>
           <size:measure key="duplicated_lines" value="0"/>
           <size:measure key="classes" value="1"/>
           <size:measure key="functions" value="6"/>
         </size:resource>
       </size:size>
     </measures:measures>
   </tusar:tusar>

