Skip to content

Latest commit

 

History

History
60 lines (44 loc) · 1.44 KB

0097-sblint.org

File metadata and controls

60 lines (44 loc) · 1.44 KB

sblint

Today I want to review not a library but a tool. SBLint is a program, which can be run from the command-line. It loads your lisp code and outputs all warnings and notes from SBCL compiler.

I must admit, that SBLint’s output is very readable. You’ll see where you left unused variables or called a function with wrong parameters.

To show you an example, I’ve added this bad code to one of my libraries:

(declaim (ftype (function (fixnum fixnum)
                          fixnum)
                foo))
(defun foo (a b)
  (+ a 10))


(defun bar ()
  (foo))


(defun blah ()
  (foo 2
       3.14))

This code is full of problems :) Let’s see how SBLint will highlight them!

[art@poftheday] sblint
src/appenders.lisp:41:0: style-warning: \
    The variable B is defined but never used.
src/appenders.lisp:46:2: simple-warning: \
    The function FOO is called with zero arguments, but wants exactly two.
src/appenders.lisp:50:2: type-warning: \
    Constant 3.14 conflicts with its asserted type FIXNUM.
WARNING: Compilation failed in a system "log4cl-extras".

# But return code is still SUCCESS:
[art@poftheday] echo $?
0

As you can see, all errors are caught. However, SBLint itself exited with 0 exit code. Because of this, we can’t add it into our CI pipeline.