homplexity 0.4.3.4 → 0.4.4.0
raw patch · 7 files changed
+78/−45 lines, 7 filesdep +homplexitydep ~basedep ~containersdep ~cpphs
Dependencies added: homplexity
Dependency ranges changed: base, containers, cpphs, deepseq, directory, filepath, haskell-src-exts, hflags, template-haskell, uniplate
Files
- Language/Haskell/Homplexity/CodeFragment.hs +1/−1
- Language/Haskell/Homplexity/Message.hs +24/−16
- Language/Haskell/Homplexity/Metric.hs +1/−1
- Language/Haskell/Homplexity/Parse.hs +3/−3
- README.md +1/−1
- changelog.md +4/−0
- homplexity.cabal +44/−23
Language/Haskell/Homplexity/CodeFragment.hs view
@@ -39,7 +39,7 @@ import Language.Haskell.Homplexity.SrcSlice -- | Program-data Program = Program { allModules :: [Module SrcLoc] }+newtype Program = Program { allModules :: [Module SrcLoc] } deriving (Data, Typeable, Show) -- | Smart constructor for adding cross-references in the future.
Language/Haskell/Homplexity/Message.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TemplateHaskell #-}@@ -21,6 +22,9 @@ import Data.Function (on) import Data.Foldable as Foldable import Data.Monoid+#if MIN_VERSION_base(4,9,0)+import Data.Semigroup+#endif import Data.Sequence as Seq import Language.Haskell.Exts import Language.Haskell.TH.Syntax (Lift(..))@@ -28,7 +32,11 @@ -- | Keeps a set of messages newtype Log = Log { unLog :: Seq Message }- deriving(Monoid)+ deriving(Monoid+#if MIN_VERSION_base(4,9,0)+ ,Semigroup+#endif+ ) instance NFData Log where rnf = rnf . unLog@@ -41,22 +49,22 @@ deriving (Eq) instance NFData Message where- rnf (Message {..}) = rnf msgSeverity `seq` rnf msgText `seq` rnf msgSrc+ rnf Message {..} = rnf msgSeverity `seq` rnf msgText `seq` rnf msgSrc instance NFData SrcLoc where- rnf (SrcLoc {..}) = rnf srcFilename `seq` rnf srcLine `seq` rnf srcColumn+ rnf SrcLoc {..} = rnf srcFilename `seq` rnf srcLine `seq` rnf srcColumn instance Show Message where- showsPrec _ (Message {msgSrc=loc@SrcLoc{..}, ..}) = shows msgSeverity- . (':':)- . (srcFilename++)- . (':':)- . shows loc- -- . shows srcLine- -- . shows srcColumn- . (':':)- . (msgText++)- . ('\n':)+ showsPrec _ Message {msgSrc=loc@SrcLoc{..}, ..} = shows msgSeverity+ . (':':)+ . (srcFilename++)+ . (':':)+ . shows loc+ -- . shows srcLine+ -- . shows srcColumn+ . (':':)+ . (msgText++)+ . ('\n':) -- | Message severity data Severity = Debug@@ -79,7 +87,7 @@ lift Critical = [| Critical |] instance FlagType Severity where- defineFlag n v = defineEQFlag n [| v :: Severity |] "{Debug|Info|Warning|Error}"+ defineFlag n v = defineEQFlag n [| v :: Severity |] "{Debug|Info|Warning|Critical}" -- | Helper for logging a message with given severity. message :: Severity -> SrcLoc -> String -> Log@@ -107,8 +115,8 @@ msgOrdering = compare `on` ((srcFilename &&& srcLine) . msgSrc) -- | Convert @Log@ into ordered sequence (@Seq@).-orderedMessages :: Severity -> Log -> Seq Message-orderedMessages severity (Log {..}) = Seq.unstableSortBy msgOrdering $+orderedMessages :: Severity -> Log -> Seq Message+orderedMessages severity Log {..} = Seq.unstableSortBy msgOrdering $ Seq.filter ((severity<=) . msgSeverity) unLog -- | Extract an ordered sequence of messages from the @Log@.
Language/Haskell/Homplexity/Metric.hs view
@@ -13,7 +13,7 @@ import Data.Data import Data.Function---import Data.Functor+import Data.Functor import Data.Generics.Uniplate.Data import Data.List import Control.Arrow
Language/Haskell/Homplexity/Parse.hs view
@@ -55,12 +55,12 @@ evaluate result) `E.catch` handleException (ParseFailed thisFileLoc) case parseResult of- ParseOk (parsed, comments) -> do putStrLn "ORDERED:"+ ParseOk (parsed, comments) -> do {-putStrLn "ORDERED:" putStrLn $ unlines $ map show $ orderCommentsAndCommentables (commentable parsed )- (classifyComments comments)+ (classifyComments comments) -} return $ Right (getPointLoc <$> parsed,- classifyComments comments)+ classifyComments comments) ParseFailed aLoc msg -> return $ Left $ critical aLoc msg where handleException helper (e :: SomeException) = return $ helper $ show e
README.md view
@@ -7,7 +7,7 @@ and [cppHs](http://hackage.haskell.org/package/cppHs). [](https://travis-ci.org/mgajda/homplexity)-[](https://hackage.haskell.org/package/homplexity)+[](https://hackage.haskell.org/package/homplexity) [](http://packdeps.haskellers.com/feed?needle=homplexity) Official releases are on [Hackage](https://hackage.haskell.org/package/homplexity)
changelog.md view
@@ -1,5 +1,9 @@ Changelog =========+ 0.4.4.0 Nov 2018+ * Relax dependencies for GHC up to 8.6+ * Build as a library+ 0.4.3.4 July 2016 * Updated for haskell-src-exts-1.18.
homplexity.cabal view
@@ -1,5 +1,5 @@ name: homplexity-version: 0.4.3.4+version: 0.4.4.0 synopsis: Haskell code quality tool description: Homplexity aims to measure code complexity, warning about fragments that might have higher defect probability@@ -16,30 +16,51 @@ license-file: LICENSE author: Michal J. Gajda maintainer: mjgajda@gmail.com-copyright: Copyright by Michal J. Gajda '2015-'2016+copyright: Copyright by Michal J. Gajda '2015-'2018 category: Language, Tools build-type: Simple extra-source-files: README.md changelog.md cabal-version: >=1.10 bug-reports: https://github.com/mgajda/homplexity/issues-tested-with: GHC==7.10.1,GHC==7.8.4+tested-with: GHC==7.8.4+ , GHC==7.10.3+ , GHC==8.0.2+ , GHC==8.2.2+ , GHC==8.4.4+ , GHC==8.6.2 source-repository head type: git location: https://github.com/mgajda/homplexity.git +Library+ exposed-modules:+ Language.Haskell.Homplexity.Assessment+ Language.Haskell.Homplexity.CodeFragment+ Language.Haskell.Homplexity.Comments+ Language.Haskell.Homplexity.Cyclomatic+ Language.Haskell.Homplexity.Message+ Language.Haskell.Homplexity.Metric+ Language.Haskell.Homplexity.Parse+ Language.Haskell.Homplexity.TypeComplexity+ Language.Haskell.Homplexity.SrcSlice+ Hs-source-dirs: .+ Other-Modules:+ Paths_homplexity+ build-depends: base+ ,haskell-src-exts+ ,directory+ ,filepath+ ,hflags+ ,uniplate+ ,deepseq+ ,containers+ ,template-haskell+ ,cpphs+ default-language: Haskell2010+ executable homplexity main-is: Homplexity.hs- other-modules: Language.Haskell.Homplexity.Assessment- Language.Haskell.Homplexity.CodeFragment- Language.Haskell.Homplexity.Comments- Language.Haskell.Homplexity.Cyclomatic- Language.Haskell.Homplexity.Message- Language.Haskell.Homplexity.Metric- Language.Haskell.Homplexity.Parse- Language.Haskell.Homplexity.TypeComplexity- Language.Haskell.Homplexity.SrcSlice- other-extensions: FlexibleContexts, FlexibleInstances, UndecidableInstances,@@ -56,18 +77,18 @@ BangPatterns, GeneralizedNewtypeDeriving, TypeFamilies- build-depends: base >=4.5 && <4.10,- haskell-src-exts >=1.18 && <1.19,- directory >=1.1 && <1.3,+ build-depends: base >=4.5 && <4.13,+ haskell-src-exts >=1.18 && <1.21,+ directory >=1.1 && <1.4, filepath >=1.2 && <1.5, hflags >=0.3 && <0.5, uniplate >=1.4 && <1.7,- deepseq >=1.3 && <1.5,- containers >=0.3 && <0.6,- template-haskell >=2.6 && <2.12,- cpphs >=1.5 && <1.21+ deepseq >=1.3 && <1.7,+ containers >=0.3 && <0.7,+ template-haskell >=2.6 && <2.14,+ cpphs >=1.5 && <1.21,+ homplexity build-tools: happy >= 1.19.0- -- hs-source-dirs: default-language: Haskell2010 test-suite Comments@@ -76,8 +97,8 @@ Language.Haskell.Homplexity.Comments Language.Haskell.Homplexity.SrcSlice type: exitcode-stdio-1.0- build-depends: base >=4.5 && <4.10,- haskell-src-exts >=1.18 && <1.19,+ build-depends: base >=4.5 && <4.12,+ haskell-src-exts >=1.18 && <1.21, uniplate >=1.4 && <1.7 default-language: Haskell2010