Informix Scan rules
Contrast Scan supports these rules for Informix.
Severity  | Contrast rule  | Engine rule ID  | Description  | 
|---|---|---|---|
Critical  | Avoid Correlated Sub Selects  | OPT.INFORMIX.AvoidCorrelatedSubSelects  | AvoidCorrelatedSubSelects: Avoid nested SELECTs that use columns defined in outer SELECTs  | 
Critical  | Cursor For Update Where Current  | OPT.INFORMIX.CursorForUpdateWhereCurrent  | CursorForUpdateWhereCurrent: If a CURSOR is declared FOR UPDATE, DELETE and UPDATE must be used with the WHERE CURRENT specification  | 
Critical  | Detect Unaware Cross Joins  | OPT.INFORMIX.DetectUnawareCrossJoins  | DetectUnawareCrossJoins: Do not make "unnoticed" cartesian products in queries  | 
Critical  | Dont Select Known Fields  | OPT.INFORMIX.DontSelectKnownFields  | DontSelectKnownFields: SELECT queries never should get fields used in the WHERE specification with {}  | 
Critical  | Fetch And Declare Same Fields  | OPT.INFORMIX.FetchAndDeclareSameFields  | FetchAndDeclareSameFields: The number of fields to retrieve specified in the DECLARE CURSOR statement must be the same as the number of fields specified in the FETCH statement  | 
High  | Avoid Declared Unopened Cursors  | OPT.INFORMIX.AvoidDeclaredUnopenedCursors  | AvoidDeclaredUnopenedCursors: If a CURSOR is declared, it must be opened  | 
High  | Avoid Numeric References In By Clauses  | OPT.INFORMIX.AvoidNumericReferencesInByClauses  | AvoidNumericReferencesInByClauses: Do not refer to column names with number indexes in * BY clauses  | 
High  | Avoid Opened Unclosed Cursors  | OPT.INFORMIX.AvoidOpenedUnclosedCursors  | AvoidOpenedUnclosedCursors: If a CURSOR is opened, it must be closed  | 
High  | Avoid Opened Unused Cursors  | OPT.INFORMIX.AvoidOpenedUnusedCursors  | AvoidOpenedUnusedCursors: If a CURSOR is opened, it must be used  | 
High  | Avoid Union  | OPT.INFORMIX.AvoidUnion  | AvoidUnion: Avoid selects with UNION  | 
High  | No Current Clause  | OPT.INFORMIX.NoCurrentClause  | NoCurrentClause: SQL queries with CURRENT clause are heavy-weighted and must be used only when necessary  | 
High  | Unused Local Var  | OPT.INFORMIX.UnusedLocalVar  | UnusedLocalVar: Avoid unused local variables  | 
High  | Unused Parameter  | OPT.INFORMIX.UnusedParameter  | UnusedParameter: Avoid unused function or procedure parameter  | 
High  | Use The As Keyword  | OPT.INFORMIX.UseTheAsKeyword  | UseTheAsKeyword: Use AS keyword when stablishing an alias to tables  | 
Info  | Avoid Concat Operator  | OPT.INFORMIX.AvoidConcatOperator  | AvoidConcatOperator: Do not use concatenation operator  | 
Info  | Avoid Non Declared Cursor  | OPT.INFORMIX.AvoidNonDeclaredCursor  | AvoidNonDeclaredCursor: Use of cursor not previously declared  | 
Low  | Avoid Goto Statement  | OPT.INFORMIX.AvoidGotoStatement  | AvoidGotoStatement: Avoid using GOTO statement  | 
Low  | Avoid Host Operations  | OPT.INFORMIX.AvoidHostOperations  | AvoidHostOperations: Do not perform arithmetic operations in the WHERE clause  | 
Low  | Avoid Insert Without Fields Specification  | OPT.INFORMIX.AvoidInsertWithoutFieldsSpecification  | AvoidInsertWithoutFieldsSpecification: Every INSERT statement must include the field specification (i.e : INSERT INTO table(column1,column2) VALUES (value1,value2))  | 
Low  | Avoid Scroll Cursors  | OPT.INFORMIX.AvoidScrollCursors  | AvoidScrollCursors: Avoid scroll cursors when possible  | 
Low  | Avoid Update Asterisk  | OPT.INFORMIX.AvoidUpdateAsterisk  | AvoidUpdateAsterisk: Avoid UPDATE with asterisk target  | 
Low  | Avoid Whenever  | OPT.INFORMIX.AvoidWhenever  | AvoidWhenever: Do not use WHENEVER clause  | 
Low  | Check Simple Condition  | OPT.INFORMIX.CheckSimpleCondition  | CheckSimpleCondition: Simplify WHERE clause conditions  | 
Low  | Dead Code  | OPT.INFORMIX.DeadCode  | DeadCode: Check and remove unreachable code  | 
Low  | Do Not Use Negation In Where  | OPT.INFORMIX.DoNotUseNegationInWhere  | DoNotUseNegationInWhere: Do not use negation operator  | 
Low  | Else In Case Statement  | OPT.INFORMIX.ElseInCaseStatement  | ElseInCaseStatement: Include an ELSE clause in CASE statements  | 
Low  | Insert Cursor In Loop  | OPT.INFORMIX.InsertCursorInLoop  | InsertCursorInLoop: Use INSERT cursors within loops  | 
Low  | Nested If Statements  | OPT.INFORMIX.NestedIfStatements  | NestedIfStatements: Avoid too deep IF statements nesting  | 
Low  | One SQL Statement Per Line  | OPT.INFORMIX.OneSQLStatementPerLine  | OneSQLStatementPerLine: Only write a SQL statement per line  | 
Low  | Too Many Cases In Case  | OPT.INFORMIX.TooManyCasesInCase  | TooManyCasesInCase: Avoid a high number of WHEN clauses in a CASE statement  | 
Low  | Too Many Lines In Function  | OPT.INFORMIX.TooManyLinesInFunction  | TooManyLinesInFunction: Avoid functions or procedures with too many lines  | 
Low  | Use Let Instead Of Initialize  | OPT.INFORMIX.UseLetInsteadOfInitialize  | UseLetInsteadOfInitialize: Use LET instead of INITIALIZE  | 
Medium  | Avoid Natural Joins  | OPT.INFORMIX.AvoidNaturalJoins  | AvoidNaturalJoins: NATURAL JOINs are buggy and unmaintenable  | 
Medium  | Avoid Nested Selects  | OPT.INFORMIX.AvoidNestedSelects  | AvoidNestedSelects: Avoid nested selects  | 
Medium  | Avoid Queries On Many Tables  | OPT.INFORMIX.AvoidQueriesOnManyTables  | AvoidQueriesOnManyTables: Avoid JOIN queries referencing too many tables  | 
Medium  | Avoid Select Asterisk  | OPT.INFORMIX.AvoidSelectAsterisk  | AvoidSelectAsterisk: Do not use SELECT *  | 
Medium  | Avoid Too Many Joins  | OPT.INFORMIX.AvoidTooManyJoins  | AvoidTooManyJoins: Avoid queries with too many JOINs  | 
Medium  | Fully Qualified Names In Columns  | OPT.INFORMIX.FullyQualifiedNamesInColumns  | FullyQualifiedNamesInColumns: Use qualified names when referring to column names  |