What is Kwalitee?


What is kwalitee?

Measuring quality is hard, and so we coined the term Kwalitee which is measurable (but inexact quality), so we can know it when we see it.

What is a bug?

If there is any difference between the docs, the code and the tests, it is a bug. Period. The bug might be in the docs or the tests, and the code is fine, but it's still a bug.

If there is ambiguity about how the code is supposed to work, it is a bug. The documentation must be clarified, and the code may be out of sync as well.

If a hoplite discovers something behaving "incorrectly", according to the hoplite, it may or may not be a bug, according to the author's intent.

What's a kwalitee module?

  • All dependencies in Makefile.PL or the Module::Build equivalent
  • Well-tested
  • Well-documented
  • Documents match code match tests
  • Covered well
  • Pod passes Test::Pod
  • All hyperlinks work

What we're avoiding

  • sprintf() breaking in PHP
  • (-3)**3 == 27


  • All object creation is checked with isa_ok(). Constructors are the most obvious, but any function that returns an object should be checked that the object is of the expected type.
  • All temporary files are cleaned up. Check the return code from unlink(), and then check that the file is actually gone.
    is( unlink( $filename ), 1, "Remove $filename" );
    ok( !-e $filename, "Actually gone" );