Introduction     Status     Examples     Manual     Downloads      


  • customization of activated checks (and exceptions) by configuration files
  • code checks: overloading of builtin elements, useless constructs, deeply
  • nested constructs, 'open' statements, magic numbers, complex conditions, empty constructs, deprecated elements, tuple size, useless parentheses, textual code duplicate, ignore of 'unit' expression, 'try/with' construct catching all exceptions
  • documentation checks: presence of comments, and spellcheck
  • interface checks: empty interface, and number of exported elements, duplicate
  • elements
  • metrics checks: coupling, Halstead, and McCabe
  • miscellaneous checks: matching of regular expressions
  • typographic checks: spaces, tabulations, headers, and file/line lengths
  • support for CheckStyle, CSV, HTML, JDepend, bare text, binary, and XML outputs
  • support for plugins (custom checks and outputs)
  • support for ocamlfind

Version 1.0 (2012-08-29):
  • support for checks based on binary annotations
  • support for binary output mode, and report-only mode
  • new code check: 'catch_all' to detect patterns catching all exceptions
  • new code check: 'code.ignore_unit' check to detect application of 'ignore' to expression whose type is 'unit'
  • bug #72: allow punctuation after closing a block
  • bug #74: handle the '::' operator
  • bug #75: do not require whitespace after '?' used for optional label
  • bug #76: do not require whitespace around '..' used for character range
  • bug #77: allow absence of whitespace before unary minus if previous token is an opening one
  • bug #79: treat '[< ... >]' and '[| ... |]' blocks like '{ ... }' blocks
  • bug #80: allow whitespace after '.' when used to introduce polymorphic type
  • bug #81: allow opening token after a label
  • bug #84: use 'center' rather than 'p' tag with 'align' attribute, and correct handling of icons
  • bug #87: install shouldn't build anything
  • bug #89: do not activate warnings by default
  • bug #90: output available checks as a ready-to-use config
  • bug #93: 'interface.duplicate' to detect duplicate entries in signatures
  • bug #94: do not require whitespace after colon
  • bug #96: 'typography.trailing_white_space' now has a 'tolerance' parameter in order to indicate how many whitespace characters may be tolerated
  • update for OCaml 4.00.0
Version 1.0-beta (2011-07-15):
  • switch to OCaml 3.12.1
  • revamped configure/build system
  • support for checks based on annotation files
  • support for checks using a state (for cross-file checks)
  • new code checks: 'empty_for', 'empty_try', and 'empty_while'
  • new code check: 'deprecated' to detect deprecated elements
  • new code check: 'tuple_size' to detect lenghty tuples
  • strict mode for documentation checks (rejects empty comments)
  • bug #66: allowed modules in '' check
  • bug #67: detection of useless parentheses in 'if', 'when', 'while', and 'for' constructs ('code.code_useless_external_parentheses')
  • bug #68: 'code.physical_comparisons' check added
  • bug #70: support for preprocessors
  • bug #71: detection of textual code duplication ('code.textual_duplicate')
Version 1.0-alpha (2010-12-31):
  • first public version