Product Documentation
Cadence SKILL IDE User Guide
Product Version IC23.1, August 2023

Built-In Messages

The built-in message name appears in parentheses and capitalized on the output report line. You can customize which messages SKILL Lint reports using the hierarchical tree displayed in the Rules section when you select Custom in the Lint Options form. SKILL core messages and their associated message groups are as follows:

Built-in Message Name Message Group Message Description

ALIAS1

error

Both arguments to alias must be symbols.

APPEND1

suggestion

Consider using cons rather than append.

ARRAYREF1

error

First argument to arrayref must evaluate to an array.

ASSOC1

suggestion

Consider using assq rather than assoc.

BACKQUOTE1

suggestion

Possibly replace this backquote with a quote.

CASE1

warning

case can never be reached (after default t).

CASE2

warning

Symbol t used in case or caseq list.

CASE3

error

Duplicate value in case or caseq.

CASE5

hint

case can be replaced with caseq.

CASE6

warning

Quoted value in case or caseq (quote not required).

CASEQ1

error

You must use case rather than caseq.

CHK1

error

Type template string must be last argument.

CHK2

error

Redundant statement.

CHK3

error

Bad argument (must be a symbol).

CHK4

error

Redundant argument template.

CHK6

error

Macros cannot have @key, @rest, or @optional.

CHK7

error

Nlambda 1st argument must be a symbol.

CHK8

error

Entry after @rest not allowed.

CHK9

error

@rest, or @key, or @optional not followed by an argument.

CHK10

error

Argument duplicated.

CHK11

error

Nlambda 2nd argument should be a list.

CHK12

error

Nlambda maximum of two arguments.

CHK13

error

@optional and @key cannot appear in the same argument list.

CHK14

error

Bad argument, should be a list of length 2.

CHK15

error

Bad argument, should be a list.

CHKARGS1

error

Function requires at least n arguments. See Check the Number of Function Arguments.

CHKARGS2

error

Function takes at most n arguments. See Check the Number of Function Arguments.

CHKARGS3

error

Key argument repeated.

CHKARGS4

error

Unknown key argument.

CHKARGS5

error

No argument following key.

CHKFORM1

error

Number of arguments mismatch.

CHKFORM2

error

Bad statement.

DBGET1

error

Second argument to ~> must be symbol or string.

DEADCODE1

warning

Unreachable code.

DECLARE1

error

Arguments to declare must be calls to arrayref, (e.g. a[10]).

DECODE1

error

You must use case or caseq rather than decode.

DEF1

error

Extra argument passed to def.

DEF2

error

Last argument to def is bad.

DEF3

hint

nlambda, macro, or alias should not be referenced before it is defined.

DEF4

hint

nlambda, macro, or alias might be referenced before it is defined.

DEF5

hint

Recursive call to an nlambda function or macro is inefficient, call declareNLambda first.

DEF6

error

Definition for function def cannot have more than 255 required or optional arguments.

DEFSTRUCT1

error

Arguments to defstruct must all be symbols.

EQUAL1    

hint

You can replace == nil with !.

EQUAL2

hint

You can replace == 1 with onep.

EQUAL3

hint

You can replace == 0 with zerop.

EVALSTRING1

suggestion

Consider using stringToFunction when evalstring is called multiple times with the same string.

ExtHead

information

Known/Unknown External functions called.

ExtKnown

information

Functions called that are defined outside of analyzed code.

External

information

Functions called that are not defined.

External0

information

Line numbers in which undefined functions were called.

FOR1

error

First argument to for must be a symbol.

FnsLocal

information

Name of a SKILL++ local function

FnsLocal0

information

Location of a SKILL++ local function

Flow

information

Reports the call flow for the code analyzed.

GET1

error

Second argument to -> must be either a symbol or a string.

GET2

error

Autoload symbol is no longer used, replace get with isCallable.

GETD1

error

getd no longer returns a list, use the function isCallable.

GO1

error

go must have only one argument, a symbol.

GO2

error

go must be called from within a prog containing a label.

IF4

error

then and else required in if construct.

IF5

error

else without corresponding then.

IF6

hint

Remove the then nil part and convert to unless.

IF7

hint

Remove the else nil part, and part convert to a when.

IF10

hint

Invert the test and replace with unless, as no else part.

IQ

information

IQ score (best is 100).

IQ1

information

IQ score is based on messages
* priority.

LABEL1

warning

Label not used within.

LABEL2

error

More than one declaration of label within.

LAMBDA1

error

Bad use of lambda.

LET1

error

Incorrect let variable definition.

LET2

hint

let statement has no local variables, so can be removed.

LET3

hint

Variable repeated in local variable list for let.

LET4

warning

Variable used before available in let assignment.

LET5

error

let statements will not accept more that 255 local variables in the next release.

LOAD1

warning

Can’t evaluate to an include/load file.

LOOP1

error

First argument must be a symbol or list of symbols.

LoadFile

information

Loading file.

MEMBER1

suggestion

Consider use of memq rather than member.

MultiRead

information

Attempt to read file more than once.

NEQUAL1

hint

You may be able to replace with !=.

NEQUAL2

hint

You can replace with !=.

NTH1

hint

Can replace call to nth with call to car, cadr, and so on.

NoRead

error

Cannot read file.

PREFIXES

information

Using package prefixes.See Check Function and Global Variable Prefixes.

PREFIX1

warning

Prefixes must be all lower case or all upper case. See Check Function and Global Variable Prefixes.

PRINTF1

error

Incorrect number of format elements.

PRINTF2

error

Format argument is not a string.

PROG1

error

Bad action statement.

PROG2

hint

prog construct may be removed.

PROG4

hint

Variable repeated in local variable list of prog.

PROG5

hint

prog may be replaced with progn.

PROG6

hint

Will need a nil at end if prog removed.

PROGN1

hint

progn with only one statement can be removed.

PUTPROP1

information

The autoload symbol is no longer used for functions in contexts.

REMOVE1

suggestion

Consider using remq rather than remove.

REP

SKILL lint run message

Short for report. REP is not based on the content of the program.

RETURN1

warning

Not within a prog: return.

RETURN2

hint

Replace return(nil) with return().

SETQ1

error

First argument should be a symbol.

SETQ2

suggestion

Possible variable initialized to nil.

SETQ3

suggestion

Assignment to loop variable.

SKFATAL

fatalerror

Error found from which SKILL Lint cannot proceed.

STATUS1

error

Second argument must be t or nil.

STATUS2

error

Unknown status flag.

STATUS3

warning

Internal (s) status flag, do not use.

STRCMP1

hint

Inefficient use of strcmp. Change to equal.

STRICT

information

Applying strict checking of global variable prefixes.

See Check Function and Global Variable Prefixes.

sklint calls the skIgnoreMessage or skUnignoreMessage SKILL API when you disable or enable strict checking. For more information on these APIs, see Lint Functions.

STRLEN1

hint

Inefficient use of strlen. Change to equal "".

Checks

information

Applying SKILL Lint checks.

Form

information

Form being read by SKILL Lint.

Read

information

This message is given for each file that is analyzed.

Unused

unused vars

Variable does not appear to be referenced.

VAR

information

Variable used or set in function/file.

VAR0

information

Variable used or set in function/file.

VAR1

error

Attempt to assign a value to t.

VAR4

information

Variables used as both global and local.

VAR5

information

Unrecognized global variables.

VAR6

information

Acceptable global variables.

VAR7

error global

Variable used as both a local and global.

VAR8

warning global

Global variable does not begin with package prefix.

VAR9

package global

Global variable begins with package prefix.

VAR12

warning

Argument does not appear to be referenced.

Add an underscore (_) prefix to an argument in a function definition to indicate that it is intentionally unused within the body of the function. For example:

procedure(notused(a b)
  t
)

then you get a warning from SKILL Lint.

VAR13

information

Internal global variable does not appear to be referenced.

If the arguments are prefixed with an underscore, for example:

procedure(notused(_a _b)
  t
)

than, SKILL Lint displays an INFO message.

VAR14

information

Package global variable does not appear to be referenced.

VAR15

error

Variable cannot begin with keyword symbol (?).

VAR15

error

Variable cannot begin with keyword symbol (?) in the next release.

VAR16

information

Variable declaration hides a previous declaration.

WHEN1

hint

Invert test and convert to when/unless.

Related Topics

SKILL Lint

SKILL Lint Features

Message Groups

SKILL Lint PASS/FAIL and IQ Algorithms


Return to top
 ⠀
X