ISC licensed by Michele Lacchia
Maintained by [email protected]
This version can be pinned in stack with:argon-0.3.1.2@sha256:71193dad7a6c87be8c8efaf6bc5906b192dcd2f0a10df0acbbae27718dc8240f,4034

Module documentation for 0.3.1.2

Installing

Simple as stack install argon or cabal install argon. Note: if you are using Stack and your resolver if too old, you might have to add some packages to your stack.yaml file.

GHC compatibility

Argon is compatible with GHC 7.8 and 7.10, it’s tested against those versions only.

Running

The Argon executable expects a list of file paths (files or directories):

$ argon --no-color --min 2 src
src/Argon/Types.hs
    61:5 toJSON - 2
src/Argon/Visitor.hs
    55:1 visitExp - 5
    62:1 visitOp - 4
    28:11 visit - 2
    35:1 getFuncName - 2
src/Argon/Parser.hs
    55:1 parseModuleWithCpp - 3
    88:1 customLogAction - 3
    35:1 analyze - 2
    39:9 analysis - 2
src/Argon/Formatters.hs
    61:1 formatResult - 3
    42:1 coloredFunc - 2
    43:11 color - 2
src/Argon/Results.hs
    35:1 export - 3
    28:1 filterResults - 2
src/Argon/Loc.hs
    18:11 toRealSrcLoc - 2

For every file, Argon sorts results with the following criteria (and in this order):

  1. complexity (descending)
  2. line number (ascending)
  3. alphabetically

When colors are enabled (default), Argon computes a rank associated with the complexity score:

Complexity Rank
0..5 A
5..10 B
above 10 C

JSON

Results can also be exported to JSON:

$ argon --json --min 2 src
[
  { "blocks": [ ], "path": "src/Argon.hs", "type": "result" },
  {
    "blocks": [{ "complexity": 2, "name": "toJSON", "lineno": 61, "col": 5 }],
    "path": "src/Argon/Types.hs",
    "type": "result"
  },
  {
    "blocks": [
      { "complexity": 5, "name": "visitExp", "lineno": 55, "col": 1 },
      { "complexity": 4, "name": "visitOp", "lineno": 62, "col": 1 },
      { "complexity": 2, "name": "visit", "lineno": 28, "col": 11 },
      { "complexity": 2, "name": "getFuncName", "lineno": 35, "col": 1 }
    ],
    "path": "src/Argon/Visitor.hs",
    "type": "result"
  },
  {
    "blocks": [
      { "complexity": 3, "name": "parseModuleWithCpp", "lineno": 55, "col": 1 },
      { "complexity": 3, "name": "customLogAction", "lineno": 88, "col": 1 },
      { "complexity": 2, "name": "analyze", "lineno": 35, "col": 1 },
      { "complexity": 2, "name": "analysis", "lineno": 39, "col": 9 }
    ],
    "path": "src/Argon/Parser.hs",
    "type": "result"
  },
  {
    "blocks": [
      { "complexity": 3, "name": "formatResult", "lineno": 61, "col": 1 },
      { "complexity": 2, "name": "coloredFunc", "lineno": 42, "col": 1 },
      { "complexity": 2, "name": "color", "lineno": 43, "col": 11 }
    ],
    "path": "src/Argon/Formatters.hs",
    "type": "result"
  },
  {
    "blocks": [
      { "complexity": 3, "name": "export", "lineno": 35, "col": 1 },
      { "complexity": 2, "name": "filterResults", "lineno": 28, "col": 1 }
    ],
    "path": "src/Argon/Results.hs",
    "type": "result"
  },
  {
    "blocks": [{ "complexity": 2, "name": "toRealSrcLoc", "lineno": 18, "col": 11 }],
    "path": "src/Argon/Loc.hs",
    "type": "result"
  },
  { "blocks": [ ], "path": "src/Argon/Preprocess.hs", "type": "result" }
]

Changes

Change log

This package uses Semantic Versioning.

v0.3.1.0

  • Add compatibility with GHC 7.8: #6

v0.3.0.0

  • Major: replace Haskell-Src-Exts with GHC API: #5
  • Add basic tests: #7

v0.2.0.0

  • Add USAGE.txt to tarball: #2

v0.1.0.0

  • Initially created.