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:
Check Check.AST Check.AST.Indent.Case Check.AST.Indent.Class Check.AST.Indent.Data Check.AST.Indent.Deriving Check.AST.Indent.Do Check.AST.Indent.FuncRhs Check.AST.Indent.Guard Check.AST.Indent.Header Check.AST.Indent.IfThenElse Check.AST.Indent.Imports Check.AST.Indent.Instance Check.AST.Indent.Let Check.AST.Indent.ListTuple Check.AST.Indent.Where Check.AST.Pattern.AndOr Check.AST.Pattern.ConstFunc Check.AST.Pattern.EqualsEmptyList Check.AST.Pattern.EqualsTrue Check.AST.Pattern.IdentFunc Check.AST.Pattern.NotEqual Check.AST.Pattern.NotOrd Check.AST.Pattern.Print Check.AST.Pattern.ThenTrueElseFalse Check.AST.TopLevel.BlankLines Check.AST.TopLevel.Signatures Check.Src Check.Src.LineLength Check.Src.Tabs Check.Src.TrailingSpace Check.Src.WhiteSpaces Main Parse.CommandLine Parse.Config Pretty.ShowOptions Pretty.ToJson Pretty.ToString Types
modules:
Check Check.AST Check.AST.Indent.Case Check.AST.Indent.Class Check.AST.Indent.Data Check.AST.Indent.Deriving Check.AST.Indent.Do Check.AST.Indent.FuncRhs Check.AST.Indent.Guard Check.AST.Indent.Header Check.AST.Indent.IfThenElse Check.AST.Indent.Imports Check.AST.Indent.Instance Check.AST.Indent.Let Check.AST.Indent.ListTuple Check.AST.Indent.Where Check.AST.Pattern.AndOr Check.AST.Pattern.ConstFunc Check.AST.Pattern.EqualsEmptyList Check.AST.Pattern.EqualsTrue Check.AST.Pattern.IdentFunc Check.AST.Pattern.NotEqual Check.AST.Pattern.NotOrd Check.AST.Pattern.Print Check.AST.Pattern.ThenTrueElseFalse Check.AST.TopLevel.BlankLines Check.AST.TopLevel.Signatures Check.Src Check.Src.LineLength Check.Src.Tabs Check.Src.TrailingSpace Check.Src.WhiteSpaces Main Parse.CommandLine Parse.Config Pretty.ShowOptions Pretty.ToJson Pretty.ToString Types
version:
2.0.0