.. _Compilation Rules:

Compilation Rules
-----------------


When running Verissimo in batch mode if there are any errors reported during compilation, linting will not proceed.

However linting can be executed if the **ignore_compile_errors** argument is used, but no compilation problems will be printed out.

In order to have both compilation problems and linting problems reported, add the following rules to your ruleset: **SYNTACTIC_PROBLEM**, **SEMANTIC_PROBLEM** and **NON_STANDARD**.

The **SYNTACTIC_PROBLEM** rule will flag all the syntax violations whereas **SEMANTIC_PROBLEM** and **NON_STANDARD** rules will apply the checks mentioned in :ref:`Semantic Checks` and :ref:`Non Standard Checks` chapters.

These rules can be configured to show either all compilation problems, or to report if there are any compilation problems by setting the parameter **showFailureDetails** to true or false.

It is also possible to select which type of problems to show by using the parameter **show** whose value can be any combination of the following: **ERROR**, **WARNING**, **INFO**, **DISABLED**.

The number of problems reported by these rules can be configured using the parameter **maxNofHits**.

The hits reported by these rules can be waived using :ref:`Lint Waivers`.

.. code-block:: xml
    :caption: Example - Ruleset with compilation rules configured with the default values of the parameters

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <ruleset library="UVM" version="2">
        <category name="Compilation">
            <rule
                id="SYNTACTIC_PROBLEM"
                name="SYNTACTIC PROBLEM"
                title="Syntactic Problems">
                <property key="showFailureDetails" value="true"/>
                <property key="show" value="ERROR"/>
                <property key="maxNofHits" value="0"/>
            </rule>
            <rule
                id="SEMANTIC_PROBLEM"
                name="SEMANTIC PROBLEM"
                title="Semantic Problems">
                <property key="showFailureDetails" value="true"/>
                <property key="show" value="ERROR"/>
                <property key="maxNofHits" value="0"/>
            </rule>
            <rule
                id="NON_STANDARD"
                name="NON STANDARD"
                title="Non Standard Constructs">
                <property key="showFailureDetails" value="true"/>
                <property key="show" value="ERROR, WARNING, INFO"/>
                <property key="maxNofHits" value="0"/>
            </rule>
        </category>
    </ruleset>


.. toctree::

    ../compile-checks/semantic-checks.rst
    ../compile-checks/non-standard-checks.rst
