Personal tools

Development Libraries and Tools

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Testing Frameworks)
(Added SmallCheck to list of testing frameworks)
 
(2 intermediate revisions by 2 users not shown)
Line 25: Line 25:
 
* [http://www.cs.chalmers.se/~rjmh/QuickCheck/ QuickCheck] - powerful testing framework where test cases are generated according to specific properties.
 
* [http://www.cs.chalmers.se/~rjmh/QuickCheck/ QuickCheck] - powerful testing framework where test cases are generated according to specific properties.
 
* [http://hackage.haskell.org/package/HUnit-1.2.2.1 HUnit] - unit testing framework similar to JUnit.
 
* [http://hackage.haskell.org/package/HUnit-1.2.2.1 HUnit] - unit testing framework similar to JUnit.
* [http://hspec.github.com/ Hspec] - a testing framework similar to RSpec with support for QuickCheck and HUnit
+
* [http://hspec.github.io/ Hspec] - a testing framework similar to RSpec with support for QuickCheck and HUnit
 
* [http://batterseapower.github.com/test-framework/ test-framework] integrates both Hunit and quickCheck
 
* [http://batterseapower.github.com/test-framework/ test-framework] integrates both Hunit and quickCheck
 
* [http://hackage.haskell.org/package/HTF-0.10.0.5 The Haskell Test Framework, HTF] integrates both Hunit and quickCheck.
 
* [http://hackage.haskell.org/package/HTF-0.10.0.5 The Haskell Test Framework, HTF] integrates both Hunit and quickCheck.
  +
* [http://documentup.com/feuerbach/tasty Tasty] - from the website: "lets you combine your unit tests, golden tests, QuickCheck/SmallCheck properties, and any other types of tests into a single test suite"
  +
* [https://github.com/feuerbach/smallcheck SmallCheck] - Similar to QuickCheck, but tests all values up to a particular depth rather than using a sample of randomly generated values.
   
 
== Dynamic Analysis Tools ==
 
== Dynamic Analysis Tools ==

Latest revision as of 06:31, 2 April 2014


This page contains a list of useful tools and libraries used frequently in Haskell development, for things such as debugging, benchmarking, static analysis and testing.

Contents

[edit] 1 Debuggers

  • ghci powerful and extensible debugger for GHC.
  • hugs a haskell interpreter that includes debugging facilities.

[edit] 2 Static Analysis Tools

Tools that perform some form of analysis on your code and provide useful feedback.

  • HLint - Detect common style mistakes and redundant parts of syntax, improving code quality.
  • Haskabelle - Convert haskell programs to isabelle theories.
  • Catch - Detect common sources of runtime errors (currently difficult to compile)
  • Sourcegraph - Haskell visualizer

Also, GHC when using the "-Wall" option provides a great deal of useful feedback.

[edit] 3 Testing Frameworks

Libraries for testing Haskell.

  • QuickCheck - powerful testing framework where test cases are generated according to specific properties.
  • HUnit - unit testing framework similar to JUnit.
  • Hspec - a testing framework similar to RSpec with support for QuickCheck and HUnit
  • test-framework integrates both Hunit and quickCheck
  • The Haskell Test Framework, HTF integrates both Hunit and quickCheck.
  • Tasty - from the website: "lets you combine your unit tests, golden tests, QuickCheck/SmallCheck properties, and any other types of tests into a single test suite"
  • SmallCheck - Similar to QuickCheck, but tests all values up to a particular depth rather than using a sample of randomly generated values.

[edit] 4 Dynamic Analysis Tools

Tools that analyse your program's run-time behavior to provide useful information, such as coverage or benchmarks.

  • hat - analyse each evaluation step of your haskell program.
  • hpc - check evaluation coverage of a haskell program, useful for determining test coverage.
  • criterion - powerful benchmarking framework.
  • threadscope - a new feature on the horizon which allows for benchmarking and visualization of multithreaded performance.
  • ghc profiling tools - a powerful suite of profiling tools exist within GHC itself

[edit] 5 Ancillary Tools

Tools that aid the development process, such as build tools, revision control systems, and similar, while not performing any interaction with the code itself.

  • darcs revision control system
  • haddock documentation system
  • cabal build system
  • hoogle type-aware API search engine