The homplexity package

[Tags:bsd3, program, test]

Homplexity aims to measure code complexity, warning about fragments that might have higher defect probability due to bad coding style on-the-large:


[Skip to Readme]

Properties

Versions 0.2, 0.2.0.0, 0.3.0.0, 0.4.0.0, 0.4.1.0, 0.4.2.0, 0.4.3.0, 0.4.3.1, 0.4.3.2, 0.4.3.3, 0.4.3.4
Change log changelog.md
Dependencies base (>=4.5 && <4.10), containers (>=0.3 && <0.6), cpphs (>=1.5 && <1.21), deepseq (>=1.3 && <1.5), directory (>=1.1 && <1.3), filepath (>=1.2 && <1.5), haskell-src-exts (==1.18.*), hflags (>=0.3 && <0.5), template-haskell (>=2.6 && <2.12), uniplate (>=1.4 && <1.7) [details]
License BSD3
Copyright Copyright by Michal J. Gajda '2015-'2016
Author Michal J. Gajda
Maintainer mjgajda@gmail.com
Category Language, Tools
Home page https://github.com/mgajda/homplexity
Bug tracker https://github.com/mgajda/homplexity/issues
Source repository head: git clone https://github.com/mgajda/homplexity.git
Uploaded Tue Jul 26 11:02:32 UTC 2016 by MichalGajda
Distributions LTSHaskell:0.4.3.3, NixOS:0.4.3.4
Downloads 888 total (29 in the last 30 days)
Votes
0 []
Status Docs uploaded by user
Build status unknown [no reports yet]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for homplexity

Readme for homplexity-0.4.3.4

homplexity

Aims to assess complexity and quality of Haskell code by measuring relative length of declarations, their depth, and code-to-comment ratio.

For parsing it uses haskell-src-exts, and cppHs.

Build Status Hackage Hackage Dependencies

Official releases are on Hackage

USAGE:

After installing with cabal install homplexity, you might run it with filenames or directories with your Haskell source

    homplexity Main.hs src/ 

Patches and suggestions are welcome.

You may run homplexity --help to see options.

How does it work?

Homplexity is based on the idea of Metrics that are applied to various CodeFragment types extracted automatically from parsed source. Each metric is then assessed whether it crosses any thresholds, and depending on them the severity of the message is chosen.

To see all metric values, set the warning --severity to INFO.

Diagram of concepts Legend of the diagram