cflint / CFLint

Static code analysis for CFML (a linter)
BSD 3-Clause "New" or "Revised" License
174 stars 84 forks source link

Annotation-based configuration #707

Open chandler3224 opened 3 years ago

chandler3224 commented 3 years ago

The option to use comments to ignore lines/specific rules doesn't seem to be working when running from the command line. I'm running against the following code:

<cfcomponent displayname="test" output="false" hint="test">

    <cffunction name="init" access="public" output="false" returntype="test">
        <cfscript>
        var testa = ''; //cflint ignore:line
        return this;
    </cfscript>
    </cffunction>

</cfcomponent>

testa is never ignored. I have tried multiple variations.

Environment

Version: 1.5.0 (also tested 1.4.1) Windows 10

java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
begin-again commented 3 years ago

Since you are within a tag context, try the tag-style comment <!--- --->

chandler3224 commented 3 years ago

Ah yes, wasn't the best example. However I used this and still the same

<cfcomponent displayname="test" output="false" hint="test">

    <cffunction name="init" access="public" output="false" returntype="test">
        <cfset var testA = '' /> <!--- @CFLintIgnore line --->
        <cfreturn />
    </cffunction>

</cfcomponent>

Used combinations of @CFLintIgnore and just cflint. Thanks for the quick reply though.

begin-again commented 3 years ago

I write mostly in CFScript and have found that the annotations do not work at all and the rules themselves have a lot of false positives.

/*
    @CFLintIgnore MISSING_SEMI,AVOID_USING_CREATEOBJECT,UNUSED_LOCAL_VARIABLE
*/
chandler3224 commented 3 years ago

Yeah, it seems the same with me. The tag comment only works for the whole file as long as it's before a component/function, doesn't support individual lines.

The cfscript comments support seems like it supports some annotations and not others. For example with this mixed snippet:

Works

<cfcomponent displayname="test" output="false" hint="test">
    <cffunction name="init" access="public" output="false" returntype="test">
        <cfscript>
            testB = ''; // cflint ignore:line
        </cfscript>
        <cfreturn />
    </cffunction>
</cfcomponent>

Doesn't work

<cfcomponent displayname="test" output="false" hint="test">
    <cffunction name="init" access="public" output="false" returntype="test">
        <cfscript>
            var testB = ''; // cflint ignore:line
        </cfscript>
        <cfreturn />
    </cffunction>
</cfcomponent>

Note the addition of the var. Strange one.

nukleos commented 3 years ago

I can confirm that (tag-based) annotations have to be the first thing to put in a file, before <cfcomponent ...>, for them to work on the whole file.

gpickin commented 2 years ago

Ok, I'm not crazy, I can't get the annotations to work for me, I tried all the variations... doesn't seem to work. I'm in all script, in queryExecute, I tried almost every syntax, and nothing. I'm running with the commandbox cflint command.