CurryInfo: stylechecker-2.0.0

categories:
Analysis
dependencies:
[Dependency "base" [[VGte "3.0.0"]],Dependency "curry-ast" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "currypath" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "directory" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "filepath" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "json" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "wl-pprint" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "transformers" [[VGte "3.0.0",VLt "4.0.0"]]]
documentation:
stylechecker: A tool to check the formatting style of Curry programs
====================================================================

This package contains the implementation of a tool to check
the formatting style of a *valid* Curry program according to the
[Curry Style Guide](https://cpm.curry-lang.org/PACKAGES/stylechecker-2.0.0/docs/style-guide/curry-style-guide.html).
The style aspects checked by this tool contain formatting (indentation) rules,
avoiding long lines, tailing spaces, etc.

Installation
------------

If you have downloaded this package, execute

    > cypm install

to install the executable `curry-stylecheck` in the package binary
directory (`HOME/.cpm/bin`).

Usage
-----

The style checker uses a default configuration, but you can define
your own configuration by putting standard values in a file
`.currystylecheckrc` (see below for its format).
This file must be in the current working directory
or in the user's home directory. A file found in the current working
directory will be preferred.

To check a program, go into the directory containing the program
and execute

    > curry-stylecheck <module_names>

If you want to check source programs which are part of a package,
execute

    > cypm exec curry-stylecheck <module_names>

The possible options for this command are:


Set the verbosity level:

    -v <level>

with the following values:

* 0: quiet (show only style warnings with their positions)
* 1: default (show module name, source code regions, and hints)
* 2: verbose (show also info and warning messages)
* 3: debug (show also all options)

Set the output format:

    -o <type>

Possible value are

* TEXT (default): human-readable messages
* JSON: to be used by a linter

Ignore or add default checks:

    -i <check>
    -a <check>

With this option one can ignore or add individual checks independent
of the default configuration.

On can set these options also in the file `.currystylecheckrc`.
There, a check is turned on if its values is `1` and it is turned
off if its values is `0`.
The following code shows a possible configuration (the default
configuration can be found in the file `config/currystylecheckrc`
in the package sources):

    -- configuration for style-check tool

    -- maximal length allowed for a line
    maxLineLength = 80

    -- output type
    oType = JSON

    -- level of verbosity,
    -- 0 quiet (warning only)
    -- 1 (default, show: modul, hints, code)
    -- 2 (verbose, show infos and warnings)
    -- 3 show all options
    verbosity = 1

    -- output
    hints = 1
    code  = 1

    -- src checks
    lineLength          = 0
    tabs                = 1
    trailingSpaces      = 1
    whiteSpaces         = 1

    -- indent and alignment
    ifThenElse    = 1
    case          = 1
    do            = 1
    let           = 1
    guard         = 1
    functionRhs   = 1
    moduleHeader  = 1
    imports       = 1
    data          = 1
    list          = 1
    deriving      = 1
    class         = 1
    instance      = 1

    -- top level declarations
    signatures    = 0
    blankLines    = 0

    -- superfluous/bad code

    ----boolean
    equalstrue        = 1
    thentrueelsefalse = 1

    ----ord
    notEqual          = 1
    notOrd            = 1

    ----list
    equalsEmptyList   = 1
    andOr             = 1

    ----func
    identFunc         = 1
    constFunc         = 1
exportedmodules:
Types Check Main Parse.CommandLine Parse.Config Check.AST Check.Src Check.Src.WhiteSpaces Check.Src.TrailingSpace Check.Src.Tabs Check.Src.LineLength Check.AST.Indent.Class Check.AST.Indent.Where Check.AST.Indent.Case Check.AST.Indent.Instance Check.AST.Indent.FuncRhs Check.AST.Indent.Header Check.AST.Indent.ListTuple Check.AST.Indent.Data Check.AST.Indent.IfThenElse Check.AST.Indent.Deriving Check.AST.Indent.Guard Check.AST.Indent.Imports Check.AST.Indent.Do Check.AST.Indent.Let Check.AST.Pattern.IdentFunc Check.AST.Pattern.ThenTrueElseFalse Check.AST.Pattern.EqualsTrue Check.AST.Pattern.AndOr Check.AST.Pattern.Print Check.AST.Pattern.EqualsEmptyList Check.AST.Pattern.NotOrd Check.AST.Pattern.ConstFunc Check.AST.Pattern.NotEqual Check.AST.TopLevel.BlankLines Check.AST.TopLevel.Signatures Pretty.ShowOptions Pretty.ToJson Pretty.ToString
modules:
Types Check Main Parse.CommandLine Parse.Config Check.AST Check.Src Check.Src.WhiteSpaces Check.Src.TrailingSpace Check.Src.Tabs Check.Src.LineLength Check.AST.Indent.Class Check.AST.Indent.Where Check.AST.Indent.Case Check.AST.Indent.Instance Check.AST.Indent.FuncRhs Check.AST.Indent.Header Check.AST.Indent.ListTuple Check.AST.Indent.Data Check.AST.Indent.IfThenElse Check.AST.Indent.Deriving Check.AST.Indent.Guard Check.AST.Indent.Imports Check.AST.Indent.Do Check.AST.Indent.Let Check.AST.Pattern.IdentFunc Check.AST.Pattern.ThenTrueElseFalse Check.AST.Pattern.EqualsTrue Check.AST.Pattern.AndOr Check.AST.Pattern.Print Check.AST.Pattern.EqualsEmptyList Check.AST.Pattern.NotOrd Check.AST.Pattern.ConstFunc Check.AST.Pattern.NotEqual Check.AST.TopLevel.BlankLines Check.AST.TopLevel.Signatures Pretty.ShowOptions Pretty.ToJson Pretty.ToString
version:
2.0.0