gretard / sonar-sql-plugin

SQL language (T-SQL, MySQL, Snowflake, Vertica and PostgreSQL dialects) plugin for SonarQube
GNU General Public License v3.0
78 stars 21 forks source link

Rule to check missing info in whole Tsql file #13

Closed ashitabh closed 3 years ago

ashitabh commented 3 years ago

I am looking for help on implementing logic to check if comment headers are missing in the file. For example , I want to ensure all developers add "Author name: " as comment in top of the code

gretard commented 3 years ago

Hi, please check the latest version. Support for comments has been added. Please see custom xml rule definition below:


<sql-rules repoName="SQL Sample Plugin checks" repoKey="SQLCCSample"
    isAdhoc="true" isExternal="true">
    <rule>
        <key>C030</key>
        <name>File does not start with multiline/header comment</name>
        <internalKey>C030</internalKey>
        <description>File does not start with multiline/header comment.
        </description>
        <severity>MINOR</severity>
        <remediationFunction>LINEAR</remediationFunction>
        <debtRemediationFunctionCoefficient>2min
        </debtRemediationFunctionCoefficient>
        <tag></tag>
        <ruleImplementation>
            <names>
                <textItem>Multiline_commentContext</textItem>
            </names>
            <textToFind />
            <parentRules />
            <childrenRules />
            <siblingsRules />
            <usesRules />
            <ruleViolationMessage>File header comment was not found
            </ruleViolationMessage>
            <times>0</times>
            <distance>0</distance>
            <index>4</index>
            <indexCheckType>Equals</indexCheckType>
            <distanceCheckType>Default</distanceCheckType>
            <ruleMatchType>ClassOnly</ruleMatchType>
            <ruleResultType>FailIfNotFound</ruleResultType>
            <textCheckType>Default</textCheckType>
            <violatingRulesCodeExamples>
                <ruleCodeExample>SELECT * FROM test_table1;</ruleCodeExample>
                <ruleCodeExample>SELECT * FROM test_table1; /*additionalComment*/
                </ruleCodeExample>
            </violatingRulesCodeExamples>
            <compliantRulesCodeExamples>
                <ruleCodeExample>/* AUTHOR: test&#13;
                    Date: 2020-01-01&#13;
                    */&#13;
                    SELECT * FROM test_table1;
                </ruleCodeExample>
            </compliantRulesCodeExamples>
        </ruleImplementation>
        <ruleType>CODE_SMELL</ruleType>
        <ruleAppliesTo>comments</ruleAppliesTo>
        <ruleReportsOn>file</ruleReportsOn>
    </rule>
</sql-rules>```