This document is the i-Code CNES user manual. It describes how to use i-Code CNES.
Before using i-Code CNES, you should:
Installation instructions are available in the installation manual [ R6 ].
The new architecture of i-Code is decomposed as described in the following schema. It is designed to be easily extendable. Users can build their own checkers and simply add their jar
in the icode/plugins
directory. See the Developer Guide for more details.
This is the common command line application for i-Code. In your project directory, use the following command to analyze all files:
# Analyze whole project icode . # Analyze whole project and make an xml output of the analysis icode . -f xml -o output.xml # List all functionality and description icode --help
Use icode --help
to get the following help about i-Code:
usage: icode [<FILE> [...]] [-c <arg>] [-e] [-f <arg>] [-h] [-l] [-o <arg>] [-p <arg>] [-q <arg>] [-r] [-v] [-x <arg>]
Analyze Shell, F77 & F90 code to find defects & bugs.
-c,--checked-languages <arg> Comma separated list of languages checked during analysis. All by default.
-e,--exporters Display all available exporters.
-f,--export-format <arg> Set the format for result file. Default format is XML.
-h,--help Display this message.
-l,--languages Display all available languages.
-o,--output <arg> Set the name for result file. Results are displayed in standard output by default.
-p,--export-parameters <arg> Comma separated list of parameters for the export. Format is:
key1=value1,key2=value2,key3=value3. Default values depend on the chosen export plugin.
-q,--list-export-parameters <arg> Display all available parameters for the given export.
-r,--rules Display all available rules.
-v,--version Display version information.
-x,--excluded-rules <arg> Comma separated list of rules id to exclude from analysis. None by default.
This is the common GUI application for i-Code.
Select Window > Preferences > i-Code CNES
.
You can set the severity configuration of the analysis using the scrollbar from RNC A to D, and choose rules to enable or disable in the different tables. You can also edit metrics' threshold.
Select files to analysis, one or several, and then click on i-Code CNES > Run analysis
.
The Eclipse plugin for i-Code allows to use i-Code from Eclipse IDE.
Select Window > Preferences > i-Code CNES
.
You can set the severity configuration of the analysis using the scrollbar from RNC A to D, and choose rules to enable or disable in the different tables. You can also edit Metrics threshold.
Select files to analysis, one or several, and then click on i-Code CNES > Run analysis
.
The SonarQube plugin for i-Code allows to use i-Code through SonarQube analysis.
Please refer to sonar-icode-cnes-plugin for more details.
This is the core library containing all i-Code utilities for code analysis.
See the Developer Guide for more details.
This is the full library containing all official checkers. It includes i-Code Core and all official language analyzers.
Rule Description Coverage COM.DATA.Array Two dimensions arrays should be declared in this way : line x column ❌ COM.DATA.DeclarationOrder Fortran 77: not applicableSee the Developer Guide for more details.
partial
…
- A redirection or a redirected variable could be considered as a file ✔️
|
into a string or command line options will raise an error except in a printf or sed- The use of |
followed by #
are not detected ✔️ SH.ERR.String The use of « if » or « while » with strings, empty wtrings should be managed.Limitation : Call of ls inside a command $(…) or …
could be ignored. ✔️ SH.FLOW.CheckArguments In a function, first instruction should be the parameters check. ✔️ SH.FLOW.CheckCodeReturn For each function and command call in the script, it’s mandatory to verify the code return of the execution using $# ✔️ SH.FLOW.CheckUser If root rights are needed, the administration intervention should be asked right after the user check ✔️ SH.INST.Basename Do not use $0, replace it by ‘basename $0‘ ✔️ SH.INST.Continue Shell : not available ❌ SH.INST.Copy ‘cp’ command should be used with arguments of the same type (file or directory) ❌ SH.INST.Find LS instruction is forbidden ✔️ SH.INST.GetOpts GETOPS should be used to check parametersLimitation: After calling getopt, issues on $1 are ignored until the declaration of a new function. ✅ partial
SH.INST.Interpreter First line should be the access to interpretor. ✔️ SH.INST.Keywords Keyword should not be used as variable name.Limitation: Use of command having keywords as option raise false positives (e.g.: option if of command dd). ✔️ SH.INST.Logical After &&
or ||
, only echo and axit are allowed. ✔️ SH.INST.Move It is forbidden to erase a file using « mv » command. ❌ SH.INST.POSIX POSIX commands should be used.Limitation: call of echo with redirections could raise errors. ✔️ SH.INST.SetShift Instructions SET and SHIFT are forbidden. ✔️ SH.INST.Variables Every variable should be written as : ${variable_name} ✔️ SH.IO.Redirect not implementedstandard redirections should be commented, the comment should contains the redirection name. ✔️ SH.MET.LimitAWK AWK instruction should not exceed 5 actions. ✔️ SH.MET.LimitSed SED instruction should not exceed 5 actions. ✔️ SH.MET.PipeLine Every command pipeline should be commented. ✔️ SH.REF.Export It’s forbidden to export function self defined by the script. ✔️ SH.REF.Inheritance Scripts should not inherit alias or user defined functions. ❌ SH.SYNC.Signals It’s mandatory to define intercepted signals using trap by their name. It’s forbidden to define it by its numeric value. ✔️ Rule Description Coverage F77.BLOC.Common White COMMON are forbidden. ✔️ F77.BLOC.Else In an instruction IF, the last ELSE IF should be follow by ELSE. ✔️ F77.BLOC.File File access whould be done using OPEN and CLOSE instructions. ❌ F77.BLOC.Function Parameter’s braces sohuld be used when defining a FUNCTION whenever there is no parameter. ✔️ F77.BLOC.Loop Nested DO loop should have different end instructions (one for each). ✔️ F77.DATA.Array Arrays dimension should be declared explicitly. The use of * is tolerated for the last one if justified with a comment. A(*), A(4, *), A(4, *, *), A(4, 4, ), but A(, 4) ✔️ F77.DATA.Common INCLUDE must be used to declare COMMON in program units referencing it. ✔️ F77.DATA.Double In a constante initialisation or in an expression evaluation, the use of (D) (as double precision is mandatory. ✔️ F77.DATA.Initialisation Variable initialisation should be done using DATA or BLOCKDATA ✔️ F77.DATA.IO Implicit logical units defined by * are forbidden. READ (,f) [iolist], READ f [,iolist], WRITE (,f) [iolist], PRINT f [,iolist] ✔️ F77.DATA.LoopDo DO loop condition parameter should use INTEGER. ✔️ F77.DATA.Parameter The use of constants, computed values or function calls as function parameters is forbidden. CALL function (3, x*y, f(z), var) ✔️ F77.ERR.OpenRead The check of eturn status for instructions OPEN and READ is mandatory. It is recommended to use “IOSTAT = “ to do it. ✔️ F77.INST.Assign ASSIGN instruction is forbidden. ✔️ F77.INST.Dimension DIMENSION instruction is forbidden. ✔️ F77.INST.Equivalence EQUIVALENCE instruction is forbidden. ✔️ F77.INST.Function FUNCTION instruction should be used with an explicite type declaration, at function definition. ✔️ F77.INST.If Arithmetic IF is forbidden. IF (Arithmetic expression) e1,e2,e3 Where "eN" are tags ✔️ F77.INST.Include If instruction INCLUDE is used, the included file should not contain executable instructions. (ASSIGN, GOTO, IF, ELSE, CONTINUE, STOP, PAUSE ; DO, READ, WRITE, PRINT, REWIND ; BACKSPACE, ENDFILE, OPEN, CLOSE, INQUIER, CALL, RETURN, END) ✔️ F77.INST.Pause PAUSE instruction is forbidden. ✔️ F77.INST.Return RETURN(i) instruction is forbidden in subprogram. ✔️ F77.INST.Save SAVE instruction is forbidden except for local variables with justification in a comment. ✔️ F77.MET.Line Interdiction de dépasser 72 caractères par ligne. ✔️ F77.NAME.GenericIntrinsic The use of generic names for intrinseque functions is mandatory. ✔️ F77.NAME.Intrinsic Intrinseque function names reuse is forbidden. ✔️ F77.NAME.KeyWords Fortran 77 keywords should not be reused for variable names. ✔️ F77.NAME.Label Tags are limited to FORMAT and CONTINUE. ✔️ F77.PROTO.Declaration External functions should be declared with EXTERNAL keyword. ✔️ F77.REF.IO Logical unit should be identified with symbolic name. ✔️ F77.REF.Open OPEN parameters FILE, STATUS and POSITION should be defined. ✔️ F77.REF.Parameter It is forbidden to set as subroutine parameter variables which are already in a COMMON bloc accessible from the subroutine and the program which calls it. COMMON /CONTROL/ A, B, C, D … PROGRAM ESSAI CALL MY_SUB1 (A, B, C, D) … END PROGRAM ESSAI …. SUBROUTINE MY_SUB1 (C _A, B, _C, C_D) ✔️ F77.TYPE.Basic Only standard types (INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL, CHARACTER) are allowed. ✔️ F77.TYPE.Hollerith Data and constant of type Hollerith are forbidden. ✔️ Rule Description Coverage F90.DESIGN.Free Allocated memory should be free in the same conceptual level. ❌ F90.DESIGN.Include File inclusion is forbidden. INCLUDE ‘file_to_include.F90’ ✔️ F90.DESIGN.Interface Modules should only contains USE, PRIVATE and PUBLIC clauses. MODULE interface_syslog Implicit none PRIVATE Interface Subroutine f_syslog(cdata) USE message_syslog Type(opendata_type) End subroutine End interface PUBLIC f_syslog End module interface_syslog ✔️ F90.DESIGN.IO In an OPEN function, units number should depend on another function or array. ✅ partial
F90.DESIGN.Obsolete This rule checks the following points: - Do not use computed GO TO - Do not use syntaxe: CHARACTER*N - Do not use arithmetic IF - In a DO loop, do not use REAL variables, neither as indice, nor as interval limits, nor as increment step - Do not exit a DO loop with other than END DO or CONTINUE - Do not branch on ENDIF - Do not use PAUSE - Do not use assigned GOTO - Do not use FORMAT label - Do not use descriptor H (Hollerith) in formats ✔️ F90.BLOC.File Every open file should be closed. OPEN ( unit = f_unit, …) … CLOSE ( unit = f_unit, …) ✔️ F90.DATA.Array Array dimensions should be respected. Example: Subroutine s1(tab) -> Subroutine s1(tab, x) Integer :: tab(2) Integer :: tab(x) ✔️ F90.DATA.ArrayAccess In an array of indirections, it is not possible to define the same item several times. Integer,dimension(3) :: a Integer.dimension(3) :: b a = ( / 1,1,3 / ) b(a) = ( / 1,2,3 / ) ✔️ F90.DATA.Constant Constants which appear in several subprograms should be defined into a module. Subroutine s1() Real PI = 3,141519 End subroutine s1 module precision -> real PI = 3.141519 Function f1() end module precision Real PI = 3,141519 End function ✔️ F90.DATA.ConstantFloat Numerical constants (see above) should be followed by subtype parameter. Integer,parameter :: DOUBLE=selected_real_kind(15) Real (DOUBLE) :: x = 0.1_DOUBLE ✔️ F90.DATA.Declaration The use of IMPLICITE NONE instruction is mandatory for each method header. Limitations : this rule is not checked for function and array ✔️ F90.DATA.Float It is forbidden to use * output format (WRITE instruction) for REAL ✔️ F90.DATA.Parameter Functions SELECTED_REAL_KIND and SELECTED_INT_KIND should be grouped in the same module. MODULE precision Integer, parameter :: DOUBLE = SELECTED_REAL_KIND(15) END MODULE ✔️ F90.ERR.Allocate Allocation and deallocation should contain “STAT” parameter. Then, « STAT » value should be tested. ALLOCATE(x, STAT = iom) IF (iom > 0) THEN … ✔️ F90.ERR.OpenRead OPEN and READ instructions, which work on files, should contain IOSTAT parameter and check this variable value. To check this, OPEN instruction should contain FILE attribute. ✔️ F90.INST.Associated Between declaration and ASSOCIATED instruction, it is mandatory to call NULLIFY. ✔️ F90.INST.Entry ENTRY instruction is forbidden. ✔️ F90.INST.Equivalence EQUIVALENCE instruction is forbidden. ✔️ F90.INST.If IF followed by one of these instructions : EXIT, GOTO, CYCLE, RETURN is forbidden. IF (x == 0) THEN GO TO 1000 End IF
✔️ F90.INST.Intent Each subprogram parameter should be declared with INTENT keyword Function f1(x, y, z) Integer, INTENT(IN) :: x Integer, INTENT(IN) :: y Integer, INTENT(OUT) :: z
✔️ F90.INST.Nullify After deallocate, the use of NULLIFY into the same logical uniti s mandatory DEALLOCATE (C, stat = iom ) NULLIFY ( C )
❌ F90.INST.Only The use of keyword ONLY without comment is forbidden ✔️ F90.INST.Operator Do not use old notation. Replace .EQ., .NE., .LT., .LE., .GT., .GE. by ==, /=, <, <=, >, >= ✔️ F90.INST.Pointer POINTER is forbidden except in those cases: - Complex data structure creation - Manage array references - Dynamic allocation into composants with derivated types ✔️ F90.NAME.GenericIntrinsic Do not use specific functions (INT, IFIX, IDINT, REAL, FLOAT, SNGL, ICHAR, CHAR, AINT, DINT, ANINT, DNINT, NINT, IDNINT, IABS, ABS, DABS, CABS, MOD, AMOD, DMOD, ISIGN, SIGN, DSIGN, IDIM, DIM, DDIM, DPROD, MAX0, AMAX1, DMAX1, AMAX0, MAX1, MIN0, AMIN1, DMIN1, AMIN0, MIN1, AIMAG, CONJG, SQRT, DSQRT, CSQRT, EXP, DEXP, CEXP, ALOG, DLOG, CLOG, ALOG10, DLOG10, SIN, DSIN, CSIN, COS, DCOS, CCOS, TAN, DTAN, ASIN, DASIN, ACOS, DACOS, ATAN, DATAN, ATAN2, DATAN2, SINH, DSINH, COSH, DCOSH, TANH, DTANH), use generic ones (INT, REAL, AINT, ANINT, NINT, ABS, MOD, SIGN, DIM, MAX, MIN, SQRT, EXP, LOG, LOG10, SIN, COS, TAN, ASIN, ACOS, ATAN, ATAN2, SINH, COSH, TANH). ✔️ F90.NAME.KeyWords Fortran keywords should not be used as variable names. ✔️ F90.PROTO.Overload Overraded operators are forbidden ✔️ F90.REF.ARRAY The use of a whole array should be represented using the notation (:) Y = A*X + B Y(:) = A(:)*X + B où Y et A sont des tableaux ✔️ F90.REF.Interface Called subprogram should be visible. subroutine Pas_1 subroutine Pas_1 call Mouv(3.0,resul) call Mouv(3.0,resul) end subroutine Pas_1 contains subroutine Mouv(oper0, resul) -> subroutine Mouv(oper0, resul) … … end subroutine Mouv end subroutine Mouv end subroutine Pas_1 ✔️ F90.REF.Label END keyword should be followed by the type (function, subroutine…) and the name. function f function f … -> … end function end function f ✔️ F90.REF.Open Every OPEN instruction should have parameters FILE, STATUS, IOSTAT and POSITION OPEN (UNIT=f_unit, FILE=c_args, STATUS=’old’, POSITION=’rewind’, IOSTAT=ios) ✔️ F90.REF.Variable A variable should be referenced with the same name in subprogram. Call incr( i ) call incr( i ) … … subroutine incr( j ) -> subroutine incr( j ) i = i + 1 j = j + 1 end subroutine incr end subroutine incr ✔️ F90.TYPE.Derivate Every type declaration should be placed into a module ✔️ F90.TYPE.Integer INTEGER parameters should be followed by SELECTED_INT_KIND expression. ✔️ F90.TYPE.Real REAL parameters should be followed by SELECTED_REAL_KIND Real, parameter :: LONG real, parameter :: LONG = SELECTED_REAL_KIND(5) ✔️ Metric File computation MET.Nesting Maximum number of nested levels if a function/method. This number is 0 if there is no imbrication. MET.Cyclomatic Number of decisions into the source code. MET.LineOfCode Number of lines into the source code (except white line and comment line). MET.RatioComment Ratio of comment in the source code. MET.LineOfComment Number of comment lines. Rule Message COM.DATA.DeclarationOrder The parameters are not defined in the right order. The order shall be: in, in/out, out. COM.DATA.FloatCompare It’s not allowed to compare float variables( "variable") with equality. COM.DATA.Initialisation The variable "variable" is used before being initialized. COM.DATA.Invariant The variable "variable" must be defined as constant. COM.DATA.LoopCondition The variable "variable" is modified inside the loop. COM.DATA.NotUsed The variable "variable" is declared and not used COM.DESIGN.ActiveWait This process contains an active wait. Shell: There is an active wait in this point. COM.DESIGN.Alloc The resource named "variable" has not been allocated and deallocated in the same algorithmic level. COM.FLOW.Abort The keyword STOP is not allowed. COM.FLOW.BooleanExpression Shell: It is not allowed use five or more conditional expressions in the same instruction.Using more than five conditions in an expression is not allowed. COM.FLOW.CaseSwitch A DEFAULT case is needed in a switch case instruction. Shell: The default case of the case switch condition is missing. COM.FLOW.CheckCodeReturn The return code of the function “function” is not checked. COM.FLOW.CheckUser The user identity is not verified in the main program. COM.FLOW.Exit There is more than one exit in the function. COM.FLOW.ExitLoop There is more than one exit in the loop. COM.FLOW.FileExistence The existences of the file “file” must be checked with the instruction INQUIRE before being opened or created. Shell: The existence of the file " + name + " has not been checked. COM.FLOW.FilePath It is not allowed to use directly the file name. Store the file path in a variable. Use the variable instead. COM.FLOW.Recursion The use of recursivity is not allowed. COM.INST.BoolNegation Double negation is not allowed. COM.INST.Brace Parentheses are needed for readability. COM.INST.CodeComment Commented code is not allowed. It shall be suppressed. Shell: The keyword " + yytext() + " is used in a comment. A variable is assigned in a comment. COM.INST.GOTO The keyword GOTO is not allowed. COM.INST.Line More than one instruction per line is not allowed. COM.INST.LoopCondition A loop condition shall be written with inequality (.LE.,<=, or .GT.,>=) COM.NAME.Homonymy Names must be unique. The name "variable" is already defined in this file. COM.PRES.Indent The code is not indented. COM.PRESLengthLine There are more than 100 characters in this line. COM.PROJECT.Header - No file header existing. This module/function should have a header with a brief description. - No file header (file name not found). This module/function should have a header with a brief description. - The module/function should have a header with a brief description. SH : The function should have a header with a brief description. COM.TYPE.Expression Mixed types “type_variable_1” with “type_variable_2” in the same expression Rule Message SH.DATA.IFS The environment variable IFS can't be modified. SH.DATA.Integer The integer variables must be defined using the typeset -i declaration. SH.DESIGN.Bash The first line must declare the interpreter (/bin/bash, /bin/ksh or /bin/false) SH.DESIGN.Options It is mandatory to use getopts and getopt and to provide the –h, -help, –v and -version options at least. SH.ERR.Help The help option (-h or --help) must be implemented. SH.ERR.NoPipe When the pipe is used in the script the option set -o pipefail is mandatory. SH.ERR.String The empty strings must be taken into account SH.FLOW.CheckArguments The number of parameters received has not been checked. SH.FLOW.CheckCodeReturn The function's return function_name has not been checked. SH.FLOW.CheckUser The user has not been checked. SH.INST.Basename The use of the keyword basename before $0 is mandatory. SH.INST.Continue The keyword CONTINUE is not allowed. SH.INST.Find The use of LS is not allowed. Use FIND instead. SH.INST.GetOpts It is mandatory to use getopts & getopt in the script. SH.INST.Interpreter The first line must declare the interpreter SH.INST.Keywords The keywords variable cannot be used as a variable. SH.INST.Logical The abbreviation || and && must be followed only by ECHO or EXIT. SH.INST.POSIX The keyword POSIX_word is not allowed. SH.INST.SetShift The keyword SET/SHIFT is not allowed. SH.INST.Variables The variable variable_name is not correctly declared (must be declared using ${ } or " " notation ) SH.IO.Redirect Thenon-standard redirection must be preceded by a comment. SH.MET.LimitAWK The AWK expression has more than 5 actions SH.MET.LimitSed The SED expression has more than 5 actions/lines SH.MET.PipeLine Every pipeline must be preceded by a comment. SH.REF.Export The keyword EXPORT is no allowed. SH.SYNC.Signals The keyword TRAP must be followed by a variable, not an integer. Rule Message F77.BLOC.Common Unnamed COMMON is not allowed. F77.BLOC.Else The IF instruction shall finish with an ELSE after the last ELSE IF. F77.BLOC.Function When calling a function, the brackets following the function name are mandatory. F77.BLOC.Loop Loops shall have distinct ends. F77.DATA.Array The dimension of the array “variable” is not well declared. The * shall be used for the last dimension. F77.DATA.Common The INCLUDE instruction shall be used to reference the needed common bloc. F77.DATA.Double The double precision variable is not correctly initialized. It misses the character D in its declaration. F77.DATA.Initialization The variable “variable” shall be initialized with DATA or BLOCK DATA before its use. F77.DATA.IO The use of * with logical units is not allowed. F77.DATA.LoopDo The control variable in a loop shall be an integer. F77.DATA.Parameter ”variable” belongs to parameter types forbidden when calling a function: a constant, an expression to be evaluated, a call to another function F77.ERR.OpenRead The status of OPEN/READ shall be tested with the parameter IOSTAT. F77.INST.Assign The instruction ASSIGN Is not allowed. F77.INST.Dimension The instruction DIMENSION Is not allowed. F77.INST.Equivalence The instruction EQUIVALENCE is not allowed. F77.INST.Function It misses the type declaration in FUNCTION header. F77.INST.If The arithmetic if is not allowed. F77.INST.Include The executable instruction “variable” is not allowed in the include file. F77.INST.Pause The instruction PAUSE is not allowed. F77.INST.Return The instruction RETURN(i) is not allowed. F77.INST.Save The instruction SAVE is only permitted for local variables F77.MET.Line There are more than 72 characters in this line. F77.NAME.GenericIntrinsic It should be used the generic name of the intrinsic function instead of “variable” F77.NAME.Intrinsic It is not allowed to use the name of an intrinsic function. F77.NAME.KeyWords The variable “variable” is a keyword in Fortran77 language. F77.NAME.Label The use of labels is not allowed except with the instructions FORMAT and CONTINUE. F77.PROTO.Declaration The function “variable” shall be declared. F77.REF.IO The logical entities shall be declared using a symbolic name. F77.REF.Open The instruction OPEN shall be called with the parameters FILE, STATUS and POSITION. F77.REF.Parameter It is not allowed to provide as a parameter the variables of an accessible bloc COMMON. The variable “variable” is used in a wrong way. F77.TYPE.Basic ”variable” is not a basic type. Basic types are INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL and CHARACTER. F77.TYPE.Hollerith Type Hollerith is not allowed. “variable” shall be a CHARACTER. Rule Message F90.BLOC.File The file “variable” is not correctly closed. F90.DATA.Array The dimension’s array must be declared as parameters’ function. F90.DATA.ArrayAccess Array “ variable1” initialized using other array named “variable2 “ with repeated values. F90.DATA.Constant The constants shall be declared and initialized in a module. F90.DATA.ConstantFloat Float constant “variable” shall be declared using the subtype_parameter: _<subtype_parameter> F90.DATA.Declaration The variable must be declared. The sequence IMPLICITE NONE must be declared after the method. F90.DATA.Float It is not allowed to use the format * for reals like “variable”. F90.DATA.Parameter It misses the use of intrinsic function SELECTED_REAL_KIND or SELECTED_INT_KIND for the subtype specification. F90.DESIGN.Include Is it possible to use a module instead of this inclusion? F90.DESIGN.Interface Interface Module shall only contain: INTERFACE, USE, IMPLICIT instructions as well as PRIVATE or PUBLIC declaration. F90.DESIGN.IO The value of the logic unity should be a integer or a variable initialised directly. F90.DESIGN.Obsolete The instruction calculed GOTO is not allowed. The instruction PAUSE is not allowed. The alternate return statement is not allowed. There is a branch on an END IF statement. It is not allowed. The use of CHARACTER* is not allowed. The instruction HOLLERITH is not allowed inside FORMAT. Error in "variable" used. The instruction ASSIGN contains the label for the FORMAT instruction. Arithmetical IF is not allowed. A DO loop shall end with END DO. The variable "variable" is a real used in a do loop. Use only INTEGER. Each loop shall have its own END DO. Shared END DO is forbidden. F90.ERR.Allocate The status of the ALLOCATE or DEALLOCATE instruction is not checked F90.ERR.OpenRead - There is no parameter IOSTAT in the OPEN/READ instruction. - The return of IOSTAT is no checked in the OPEN/READ instruction. F90.INST.Associated The pointer « variable » is not set to null before the use of the instruction ASSOCIATED. F90.INST.Entry The instruction ENTRY is not allowed. F90.INST.Equivalence The instruction EQUIVALENCE is not allowed. F90.INST.If Logical IF (without THEN and ENDIF) is only allowed with EXIT, CYCLE, GOTO, RETURN statements. F90.INST.Intent It misses the attribute INTENT for the parameter “variable” F90.INST.Nullify It misses the instruction NULLIFY after the DEALLOCATION of “variable”. F90.INST.Only The instruction ONLY must be preceded by a comment. F90.INST.Operator The symbolic notation (==, /=, <=, <, >=, >) must be used instead of (.EQ., .NE., .LT., .LE., .GT., .GE.). Error in “variable”. F90.INST.Pointer This use of POINTER is not allowed. F90.NAME.GenericIntrinsic Use the generic name of the intrinsic functions instead of “variable”. F90.NAME.KeyWords The variable “variable” is a keyword in Fortran90 language. F90.PROTO.Overload Overloading operator is not allowed. Overload of “variable” F90.REF.ARRAY It should be used the notation(:) to specify the entire use of the arrays: “list_variables”. F90.REF.Interface The function "function" is not visible in this point. F90.REF.Label It misses the name of the subprogram. It must finish with END TYPE_PROGRAM NAME. F90.REF.Open It misses one or more parameters In OPEN instruction. Mandatory parameters are FILE, STATUS, IOSTAT, POSITION. F90.REF.Variable The variable “variable” is used with different names inside the subprogram. F90.TYPE.Derivate The variable " must be defined inside the module structure. F90.TYPE.Integer It misses the declaration SELECTED_INT_KIND in the initialisation of “variables” F90.TYPE.Real It misses the declaration SELECTED_REAL_KIND in the initialisation of “variables” LIMITATION ALTERNATIVE LINKED ISSUE Powershell does not allow to analysis launch Use cmd.exe #73 Shell: strings without quotes are not well supported Use quotes for strings #31 Files without identified extension are not analyzed Analysis on project are based on file extension to attribute the good file to the good analyzer. Which mean, it's not required to filter file's extension when launching an analysis on a project, however it's important (especially in shell) that files that should be analyzed have an appropriate extension.
no_extension
should be renamed no_extension.sh
in order to be analyzed. #00
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4