Kwalitee Issues

has_meta_yml

Add a META.yml to the distribution. Your buildtool should be able to autogenerate it.

has_changelog

Add a Changelog (best named 'Changes') to the distribution. It should list at least major changes implemented in newer versions.

no_generated_files

Remove the offending files/directories!

Error: Build

no_mymeta_files

Update MANIFEST.SKIP to exclude MYMETA files. If you are lazy, add "#!install_default" in your MANIFEST.SKIP and update your ExtUtils::Manifest if necessary, then some of the most common files will be excluded.

manifest_matches_dist

Run a proper command ("make manifest" or "./Build manifest", maybe with a force option), or use a distribution builder to generate the MANIFEST. Or update MANIFEST manually.

Error:

  • MANIFEST (68) does not match dist (77):
  • Missing in MANIFEST: .gitignore, Build, MANIFEST, MYMETA.yml, Makefile.PL, NOW, NOW~, README, README.pod, ToDo.txt, VERSIONS, _build/auto_features, _build/build_params, _build/cleanup, _build/config_data, _build/features, _build/magicnum, _build/notes, _build/prereqs, _build/runtime_params, install, lib/Yote.pm, lib/Yote/Account.pm, lib/Yote/AccountRoot.pm, lib/Yote/AppRoot.pm, lib/Yote/Array.pm, lib/Yote/Cache.pm, lib/Yote/Census.pm, lib/Yote/ClientObj.pm, lib/Yote/Cron.pm, lib/Yote/FreeApp.pm, lib/Yote/Hash.pm, lib/Yote/Login.pm, lib/Yote/MysqlIO.pm, lib/Yote/Obj.pm, lib/Yote/ObjProvider.pm, lib/Yote/SQLiteIO.pm, lib/Yote/Sample/Census.pm, lib/Yote/Sample/SecretCollect.pm, lib/Yote/Sample/SecretCollect.pm~, lib/Yote/SystemObj.pm, lib/Yote/Test/DummyCache.pm, lib/Yote/Test/Hello.pm, lib/Yote/Test/TestAppNeedsLogin.pm, lib/Yote/Test/TestAppNoLogin.pm, lib/Yote/Test/TestDeepCloner.pm, lib/Yote/Test/TestNoDeepCloner.pm, lib/Yote/WebAppServer.pm, lib/Yote/YoteRoot.pm, lib/Yote/YoteRoot.pm~, perl.exe.stackdump, sample/secret_collect.html~, script/perl.exe.stackdump, script/yote_server, script/yote_server.PL, script/yote_server~, t/docs.t, t/sqlite.t, tasklog, yote_root/data/SQLite.yote.db, yote_root/html/index.html, yote_root/html/yote/index.html, yote_root/html/yote/js/jquery-latest.js, yote_root/html/yote/js/jquery.base64.min.js, yote_root/html/yote/js/jquery.cookie.js, yote_root/html/yote/js/jquery.dumper.js, yote_root/html/yote/js/jquery.jsonp-2.1.4.min.js, yote_root/html/yote/js/json2.js, yote_root/html/yote/js/yote.js, yote_root/html/yote/js/yote.system.util.js, yote_root/html/yote/js/yote.util.js, yote_root/html/yote/obj_explore.html, yote_root/html/yote/reset.html, yote_root/html/yote/sample/secret_collect.html, yote_root/html/yote/unit_tests.html, yote_root/html/yote/unit_tests.html~, yote_root/yote.pid
  • Missing in Dist: ./Build, ./MANIFEST, ./MYMETA.yml, ./Makefile.PL, ./NOW, ./P.tar, ./README, ./README.pod, ./ToDo.txt, ./VERSIONS, ./_build/auto_features, ./_build/build_params, ./_build/cleanup, ./_build/config_data, ./_build/features, ./_build/magicnum, ./_build/notes, ./_build/prereqs, ./_build/runtime_params, ./install, ./lib/Yote.pm, ./lib/Yote/Account.pm, ./lib/Yote/AccountRoot.pm, ./lib/Yote/AppRoot.pm, ./lib/Yote/Array.pm, ./lib/Yote/Cache.pm, ./lib/Yote/Census.pm, ./lib/Yote/ClientObj.pm, ./lib/Yote/Cron.pm, ./lib/Yote/FreeApp.pm, ./lib/Yote/Hash.pm, ./lib/Yote/Login.pm, ./lib/Yote/MysqlIO.pm, ./lib/Yote/Obj.pm, ./lib/Yote/ObjProvider.pm, ./lib/Yote/SQLiteIO.pm, ./lib/Yote/Sample/Census.pm, ./lib/Yote/Sample/SecretCollect.pm, ./lib/Yote/SystemObj.pm, ./lib/Yote/Test/DummyCache.pm, ./lib/Yote/Test/Hello.pm, ./lib/Yote/Test/TestAppNeedsLogin.pm, ./lib/Yote/Test/TestAppNoLogin.pm, ./lib/Yote/Test/TestDeepCloner.pm, ./lib/Yote/Test/TestNoDeepCloner.pm, ./lib/Yote/WebAppServer.pm, ./lib/Yote/YoteRoot.pm, ./script/yote_server.PL, ./t/docs.t, ./t/sqlite.t, ./tasklog, ./yote_root/data/SQLite.yote.db, ./yote_root/html/index.html, ./yote_root/html/yote/index.html, ./yote_root/html/yote/js/jquery-latest.js, ./yote_root/html/yote/js/jquery.base64.min.js, ./yote_root/html/yote/js/jquery.cookie.js, ./yote_root/html/yote/js/jquery.dumper.js, ./yote_root/html/yote/js/jquery.jsonp-2.1.4.min.js, ./yote_root/html/yote/js/json2.js, ./yote_root/html/yote/js/yote.js, ./yote_root/html/yote/js/yote.system.util.js, ./yote_root/html/yote/js/yote.util.js, ./yote_root/html/yote/obj_explore.html, ./yote_root/html/yote/reset.html, ./yote_root/html/yote/sample/secret_collect.html, ./yote_root/html/yote/unit_tests.html, ./yote_root/yote.pid

meta_yml_declares_perl_version

If you are using Build.PL define the {requires}{perl} = VERSION field. If you are using MakeMaker (Makefile.PL) you should upgrade ExtUtils::MakeMaker to 6.48 and use MIN_PERL_VERSION parameter. Perl::MinimumVersion can help you determine which version of Perl your module needs.

has_meta_json

Add a META.json to the distribution. Your buildtool should be able to autogenerate it.

proper_libs

Move your *.pm files in a directory named 'lib'. The directory structure should look like 'lib/Your/Module.pm' for a module named 'Your::Module'. If you need to provide additional files, e.g. for testing, that should not be considered for Kwalitee, then you should look at the 'provides' map in META.yml to limit the files scanned; or use the 'no_index' map to exclude parts of the distribution.

Error: ./lib/Yote.pm, ./lib/Yote/Account.pm, ./lib/Yote/AccountRoot.pm, ./lib/Yote/AppRoot.pm, ./lib/Yote/Array.pm, ./lib/Yote/Cache.pm, ./lib/Yote/Census.pm, ./lib/Yote/ClientObj.pm, ./lib/Yote/Cron.pm, ./lib/Yote/Hash.pm, ./lib/Yote/MysqlIO.pm, ./lib/Yote/Obj.pm, ./lib/Yote/ObjProvider.pm, ./lib/Yote/SQLiteIO.pm, ./lib/Yote/Sample/SecretCollect.pm, ./lib/Yote/SystemObj.pm, ./lib/Yote/Test/DummyCache.pm, ./lib/Yote/Test/Hello.pm, ./lib/Yote/Test/TestAppNeedsLogin.pm, ./lib/Yote/Test/TestAppNoLogin.pm, ./lib/Yote/Test/TestDeepCloner.pm, ./lib/Yote/Test/TestNoDeepCloner.pm, ./lib/Yote/WebAppServer.pm, ./lib/Yote/YoteRoot.pm

no_missing_files_in_provides

Use authoring tool like Dist::Zilla, Milla, and Minilla to generate correct provides.

Error: ./lib/Yote.pm, ./lib/Yote/Account.pm, ./lib/Yote/AccountRoot.pm, ./lib/Yote/AppRoot.pm, ./lib/Yote/Array.pm, ./lib/Yote/Cache.pm, ./lib/Yote/Census.pm, ./lib/Yote/ClientObj.pm, ./lib/Yote/Cron.pm, ./lib/Yote/Hash.pm, ./lib/Yote/MysqlIO.pm, ./lib/Yote/Obj.pm, ./lib/Yote/ObjProvider.pm, ./lib/Yote/SQLiteIO.pm, ./lib/Yote/Sample/SecretCollect.pm, ./lib/Yote/SystemObj.pm, ./lib/Yote/Test/DummyCache.pm, ./lib/Yote/Test/Hello.pm, ./lib/Yote/Test/TestAppNeedsLogin.pm, ./lib/Yote/Test/TestAppNoLogin.pm, ./lib/Yote/Test/TestDeepCloner.pm, ./lib/Yote/Test/TestNoDeepCloner.pm, ./lib/Yote/WebAppServer.pm, ./lib/Yote/YoteRoot.pm

test_prereq_matches_use

List all modules used in the test suite in META.yml test_requires

Error:

  • Test::Pod

consistent_version

Split the distribution, or fix the version numbers to make them consistent (use the highest version number to avoid version downgrade).

Error: 0.01,0.081,0.085

meta_yml_has_repository_resource

Add a 'repository' resource to the META.yml via 'meta_add' accessor (for Module::Build) or META_ADD parameter (for ExtUtils::MakeMaker).

has_separate_license_file

This is not a critical issue. Currently mainly informative for the CPANTS authors. It might be removed later.

configure_prereq_matches_use

List all modules used in the Makefile.PL/Build.PL in META.yml configure_requires

Error:

  • Module::Build

Modules

Name Abstract Version View
Yote Code server side, use client side. 0.085 metacpan
Yote::Account metacpan
Yote::AccountRoot metacpan
Yote::AppRoot Application Server Base Objects 0.085 metacpan
Yote::Array All arrays in the Yote system get tied to this class. 0.01 metacpan
Yote::Cache metacpan
Yote::Census metacpan
Yote::ClientObj 0.01 metacpan
Yote::Cron metacpan
Yote::Hash All hashes in the Yote system get tied to this class. 0.01 metacpan
Yote::MysqlIO A mysql persistance engine for Yote. 0.01 metacpan
Yote::Obj Base class for all persistant Yote objects. 0.01 metacpan
Yote::ObjProvider Serves Yote objects. Configured to a persistance engine. 0.01 metacpan
Yote::SQLiteIO A SQLite persistance engine for Yote. 0.01 metacpan
Yote::Sample::SecretCollect metacpan
Yote::SystemObj metacpan
Yote::Test::DummyCache metacpan
Yote::Test::Hello 0.01 metacpan
Yote::Test::TestAppNeedsLogin 0.01 metacpan
Yote::Test::TestAppNoLogin 0.01 metacpan
Yote::Test::TestDeepCloner metacpan
Yote::Test::TestNoDeepCloner metacpan
Yote::WebAppServer is a library used for creating prototype applications for the web. 0.081 metacpan
Yote::YoteRoot metacpan

Provides

Name File View
Yote::Login lib/Yote/Login.pm metacpan
Yote::Sample::Census lib/Yote/Sample/Census.pm metacpan

Other Files

MANIFEST metacpan
Makefile.PL metacpan
README metacpan
README.pod metacpan