Kwalitee Indicators
Core indicators
These indicators are for important issues everyone should fix if found. These are also used to calculate your score and ranking.
Name | Description | Fail (Latest) |
Fail (CPAN) |
Fail (BackPAN) |
---|---|---|---|---|
buildtool_not_executable | The build tool (Build.PL/Makefile.PL) is executable. This is bad because you should specify which perl you want to use while installing. (defined in Module::CPANTS::SiteKwalitee::Files) |
901 (3.17 %) |
4053 (3.93 %) |
15381 (5.3 %) |
distname_matches_name_in_meta | The distribution name (eg. 'Foo-Bar' of Foo-Bar-1.42.tar.gz) does not match the 'name' field in META files. (defined in Module::CPANTS::SiteKwalitee::Distname) |
95 (0.33 %) |
381 (0.37 %) |
1950 (0.67 %) |
extractable | This distribution doesn't extract well due to several reasons such as unsupported archive type (CPANTS only supports tar.gz, tgz and zip archives), file permissions, broken links, invalid filenames, and so on. Most of other kwalitee metrics should be ignored. (defined in Module::CPANTS::SiteKwalitee::Extraction) |
13 (0.05 %) |
50 (0.05 %) |
365 (0.13 %) |
extracts_nicely | This distribution doesn't create a directory and extracts its content into this directory. Instead, it creates more than one directories (some of which are probably system-specific hidden files/directories), or it spews its content into the current directory, making it really hard/annoying to remove the unpacked package. (defined in Module::CPANTS::SiteKwalitee::Extraction) |
62 (0.22 %) |
128 (0.12 %) |
514 (0.18 %) |
has_abstract_in_pod | No abstract (short description of a module) is found in pod from this distribution. (defined in Module::CPANTS::Kwalitee::Pod) |
977 (3.44 %) |
3425 (3.32 %) |
10918 (3.77 %) |
has_buildtool | Makefile.PL and/or Build.PL are missing. This makes installing this distribution hard for humans and impossible for automated tools like CPAN/CPANPLUS/cpanminus. (defined in Module::CPANTS::Kwalitee::Files) |
132 (0.46 %) |
335 (0.33 %) |
1331 (0.46 %) |
has_changelog | The distribution hasn't got a Changelog (named something like m/^chang(es?|log)|history$/i). A Changelog helps people decide if they want to upgrade to a new version. (defined in Module::CPANTS::Kwalitee::Files) |
2014 (7.09 %) |
6281 (6.1 %) |
22837 (7.88 %) |
has_human_readable_license | This distribution does not have a license defined in the documentation or in a file called LICENSE (defined in Module::CPANTS::Kwalitee::License) |
1968 (6.92 %) |
6219 (6.04 %) |
26061 (8.99 %) |
has_license_in_source_file | Does not have license information in any of its source files (defined in Module::CPANTS::Kwalitee::License) |
3181 (11.19 %) |
10686 (10.37 %) |
37694 (13 %) |
has_manifest | The file "MANIFEST" is missing from this distribution. The MANIFEST lists all files included in the distribution. (defined in Module::CPANTS::Kwalitee::Files) |
357 (1.26 %) |
1138 (1.1 %) |
3539 (1.22 %) |
has_meta_yml | The file "META.yml" is missing from this distribution. META.yml is needed by people maintaining module collections (like CPAN), for people writing installation tools, or just people who want to know some stuff about a distribution before downloading it. (defined in Module::CPANTS::Kwalitee::Files) |
1615 (5.68 %) |
5461 (5.3 %) |
24158 (8.33 %) |
has_proper_version | The version number isn't a number. It probably contains letter besides a leading 'v', which it shouldn't (defined in Module::CPANTS::SiteKwalitee::DistVersion) |
110 (0.39 %) |
459 (0.45 %) |
4617 (1.59 %) |
has_readme | The file "README" is missing from this distribution. The README provides some basic information to users prior to downloading and unpacking the distribution. (defined in Module::CPANTS::Kwalitee::Files) |
1829 (6.44 %) |
7164 (6.95 %) |
19486 (6.72 %) |
has_tests | This distribution doesn't contain either a file called 'test.pl' or a directory called 't'. This indicates that it doesn't contain even the most basic test-suite. This is really BAD! (defined in Module::CPANTS::Kwalitee::Files) |
1117 (3.93 %) |
3571 (3.47 %) |
8902 (3.07 %) |
has_version | The distribution filename (eg. Foo-Bar-1.42.tar.gz) does not include a version number (or something that looks like a reasonable version number to CPAN::DistnameInfo) (defined in Module::CPANTS::SiteKwalitee::DistVersion) |
54 (0.19 %) |
78 (0.08 %) |
338 (0.12 %) |
main_module_version_matches_dist_version | The version and/or name of the main module in this distribution doesn't match the distribution version and/or name. (defined in Module::CPANTS::SiteKwalitee::Version) |
1423 (5.01 %) |
5394 (5.24 %) |
18278 (6.3 %) |
manifest_matches_dist | MANIFEST does not match the contents of this distribution. (defined in Module::CPANTS::Kwalitee::Manifest) |
1345 (4.73 %) |
5510 (5.35 %) |
15673 (5.41 %) |
meta_json_conforms_to_known_spec | META.json does not conform to any recognised META Spec. (defined in Module::CPANTS::Kwalitee::MetaYML) |
151 (0.53 %) |
675 (0.66 %) |
1523 (0.53 %) |
meta_json_is_parsable | The META.json file of this distribution could not be parsed by the version of JSON parser CPANTS is using. (defined in Module::CPANTS::Kwalitee::MetaYML) |
22 (0.08 %) |
70 (0.07 %) |
131 (0.05 %) |
meta_yml_conforms_to_known_spec | META.yml does not conform to any recognised META.yml Spec. (defined in Module::CPANTS::Kwalitee::MetaYML) |
1496 (5.26 %) |
5484 (5.32 %) |
20341 (7.02 %) |
meta_yml_is_parsable | The META.yml file of this distribution could not be parsed by the version of CPAN::Meta::YAML.pm CPANTS is using. (defined in Module::CPANTS::Kwalitee::MetaYML) |
79 (0.28 %) |
255 (0.25 %) |
1261 (0.43 %) |
no_broken_auto_install | This distribution uses an old version of Module::Install. Versions of Module::Install prior to 0.89 do not detect correctly that CPAN/CPANPLUS shell is used. (defined in Module::CPANTS::Kwalitee::BrokenInstaller) |
210 (0.74 %) |
827 (0.8 %) |
3387 (1.17 %) |
no_broken_module_install | This distribution uses an obsolete version of Module::Install. Versions of Module::Install prior to 0.61 might not work on some systems at all. Additionally if your Makefile.PL uses the 'auto_install()' feature, you need at least version 0.64. Also, 1.04 is known to be broken. (defined in Module::CPANTS::Kwalitee::BrokenInstaller) |
161 (0.57 %) |
542 (0.53 %) |
1993 (0.69 %) |
no_files_to_be_skipped | This distribution contains files that should be skipped by MANIFEST.SKIP. (defined in Module::CPANTS::Kwalitee::Files) |
493 (1.73 %) |
2071 (2.01 %) |
7348 (2.53 %) |
no_generated_files | This distribution has files/directories that should be generated at build time, not distributed by the author. (defined in Module::CPANTS::SiteKwalitee::Files) |
148 (0.52 %) |
662 (0.64 %) |
1844 (0.64 %) |
no_mymeta_files | This distribution contains MYMETA.* files which should be used only locally. This metric should be integrated into 'no_generated_files' eventually, but as MYMETA.* files are recent inventions, you might need to take special care if MANIFEST.SKIP exists in your distribution. Hence this metric. (defined in Module::CPANTS::SiteKwalitee::MyMeta) |
209 (0.74 %) |
1054 (1.02 %) |
3660 (1.26 %) |
no_pax_headers | This distribution is archived with PAX extended headers, which may be useful under some environments, but may also make extraction fail under other environments (Archive::Tar ignores PAX information as well). (defined in Module::CPANTS::SiteKwalitee::Extraction) |
488 (1.72 %) |
1887 (1.83 %) |
2636 (0.91 %) |
no_pod_errors | The documentation for this distribution contains syntactic errors in its POD. Note that this metric tests all .pl, .pm and .pod files, even if they are in t/. See 'pod_message' in the dist error view for more info. (defined in Module::CPANTS::SiteKwalitee::Pod) |
1277 (4.49 %) |
7612 (7.39 %) |
29572 (10.2 %) |
no_symlinks | This distribution includes symbolic links (symlinks). This is bad, because there are operating systems that do not handle symlinks. (defined in Module::CPANTS::Kwalitee::Files) |
13 (0.05 %) |
29 (0.03 %) |
100 (0.03 %) |
portable_filenames | This distribution has at least one file with non-portable characters in its filename, which may cause problems under some environments. (defined in Module::CPANTS::SiteKwalitee::Files) |
30 (0.11 %) |
230 (0.22 %) |
845 (0.29 %) |
prereq_matches_use | This distribution uses a module or a dist that's not listed as a prerequisite. (defined in Module::CPANTS::SiteKwalitee::Prereq) |
1689 (5.94 %) |
8411 (8.16 %) |
23394 (8.07 %) |
use_strict | This distribution does not 'use strict;' (or its equivalents) in all of its modules. Note that this is not about the actual strictness of the modules. It's bad if nobody can tell whether the modules are strictly written or not, without reading the source code of your favorite clever module that actually enforces strictness. In other words, it's bad if someone feels the need to add 'use strict' to your modules. (defined in Module::CPANTS::Kwalitee::Uses) |
3017 (10.62 %) |
12848 (12.47 %) |
43230 (14.91 %) |
Extra indicators
These indicators are for less important (or more controversial) issues that you might or might not want to ignore. These are not used while calculating your ranking.
Name | Description | Fail (Latest) |
Fail (CPAN) |
Fail (BackPAN) |
---|---|---|---|---|
consistent_version | This distribution has .pm files with inconsistent versions. (defined in Module::CPANTS::SiteKwalitee::Version) |
1319 (4.64 %) |
8013 (7.78 %) |
31684 (10.93 %) |
has_known_license_in_source_file | Does not have license information in any of its source files, or the information is not recognized by Software::License (defined in Module::CPANTS::Kwalitee::License) |
4245 (14.94 %) |
14851 (14.42 %) |
49992 (17.24 %) |
has_meta_json | The file "META.json" is missing from this distribution. META.json has better information than META.yml and is preferred by people maintaining module collections (like CPAN), for people writing installation tools, or just people who want to know some stuff about a distribution before downloading it. (defined in Module::CPANTS::Kwalitee::Files) |
9183 (32.31 %) |
36744 (35.67 %) |
125037 (43.12 %) |
has_tests_in_t_dir | This distribution contains either a file called 'test.pl' (the old test file) or is missing a directory called 't'. This indicates that it uses the old test mechanism or it has no test-suite. (defined in Module::CPANTS::Kwalitee::Files) |
1802 (6.34 %) |
6456 (6.27 %) |
19317 (6.66 %) |
meta_yml_declares_perl_version | This distribution does not declare the minimum perl version in META.yml. (defined in Module::CPANTS::Kwalitee::MetaYML) |
12303 (43.29 %) |
43898 (42.61 %) |
123348 (42.54 %) |
meta_yml_has_license | This distribution does not have a license defined in META.yml. (defined in Module::CPANTS::Kwalitee::License) |
5155 (18.14 %) |
16983 (16.49 %) |
60461 (20.85 %) |
no_abstract_stub_in_pod | A well-known abstract stub (typically generated by an authoring tool) is found in this distribution. (defined in Module::CPANTS::Kwalitee::Pod) |
18 (0.06 %) |
104 (0.1 %) |
313 (0.11 %) |
no_dot_dirs | This distribution has a dot directory, which most probably derives from a version control system. (defined in Module::CPANTS::SiteKwalitee::Files) |
135 (0.48 %) |
791 (0.77 %) |
1218 (0.42 %) |
no_dot_underscore_files | This distribution has dot underscore files which may cause various problems. (defined in Module::CPANTS::SiteKwalitee::Files) |
32 (0.11 %) |
104 (0.1 %) |
436 (0.15 %) |
no_invalid_versions | This distribution has .pm files with an invalid version. (defined in Module::CPANTS::SiteKwalitee::Version) |
121 (0.43 %) |
890 (0.86 %) |
3310 (1.14 %) |
no_local_dirs | This distribution contains a well-known directory for local use (i.e. not suitable for a public distribution). (defined in Module::CPANTS::SiteKwalitee::Files) |
7 (0.02 %) |
34 (0.03 %) |
70 (0.02 %) |
no_maniskip_error | This distribution's MANIFEST.SKIP has a problematic entry. (defined in Module::CPANTS::Kwalitee::Files) |
9 (0.03 %) |
60 (0.06 %) |
195 (0.07 %) |
no_missing_files_in_provides | Provides field in the META.yml lists a file that does not found in the distribution. (defined in Module::CPANTS::Kwalitee::FindModules) |
31 (0.11 %) |
186 (0.18 %) |
453 (0.16 %) |
no_stdin_for_prompting | This distribution is using direct call from STDIN instead of prompt(). Make sure STDIN is not used in Makefile.PL or Build.PL. (defined in Module::CPANTS::Kwalitee::Files) |
43 (0.15 %) |
509 (0.49 %) |
2816 (0.97 %) |
no_unauthorized_packages | Apparently this distribution has unauthorized packages now. (defined in Module::CPANTS::SiteKwalitee::Permissions) |
591 (2.08 %) |
3128 (3.04 %) |
13320 (4.59 %) |
proper_libs | There is more than one .pm file in the base dir, or the .pm files are not in lib/ directory. (defined in Module::CPANTS::Kwalitee::FindModules) |
385 (1.35 %) |
2479 (2.41 %) |
9749 (3.36 %) |
test_prereq_matches_use | This distribution uses a module or a dist in its test suite that's not listed as a test prerequisite. (defined in Module::CPANTS::SiteKwalitee::Prereq) |
800 (2.81 %) |
4191 (4.07 %) |
10242 (3.53 %) |
use_warnings | This distribution does not 'use warnings;' (or its equivalents) in all of its modules. Note that this is not about that your modules actually warn when something bad happens. It's bad if nobody can tell if a module warns or not, without reading the source code of your favorite module that actually enforces warnings. In other words, it's bad if someone feels the need to add 'use warnings' to your modules. (defined in Module::CPANTS::Kwalitee::Uses) |
7012 (24.67 %) |
27623 (26.81 %) |
90703 (31.28 %) |
valid_signature | This dist failed its Module::Signature verification and does not to install automatically through the CPAN client if Module::Signature is installed. Note: unsigned dists will automatically pass this kwalitee check. (defined in Module::CPANTS::SiteKwalitee::Signature) |
977 (3.44 %) |
4329 (4.2 %) |
11587 (4 %) |
Experimental indicators
These indicators are mainly for issues that are too new or too picky and there are a lot of failing distributions on the CPAN, or just to gather information. These are not used while calculating your score and ranking.
Name | Description | Fail (Latest) |
Fail (CPAN) |
Fail (BackPAN) |
---|---|---|---|---|
configure_prereq_matches_use | This distribution uses a module or a dist in its Makefile.PL/Build.PL that's not listed as a configure prerequisite. (defined in Module::CPANTS::SiteKwalitee::Prereq) |
205 (0.72 %) |
974 (0.95 %) |
2686 (0.93 %) |
has_separate_license_file | This distribution does not have a LICENSE or LICENCE file in its root directory. (defined in Module::CPANTS::Kwalitee::License) |
12081 (42.51 %) |
46100 (44.75 %) |
143592 (49.52 %) |
meta_yml_has_provides | This distribution does not have a list of provided modules defined in META.yml. (defined in Module::CPANTS::Kwalitee::MetaYML) |
17886 (62.93 %) |
66155 (64.22 %) |
183588 (63.32 %) |
meta_yml_has_repository_resource | This distribution does not have a link to a repository in META.yml. (defined in Module::CPANTS::Kwalitee::MetaYML) |
9082 (31.96 %) |
34097 (33.1 %) |
107808 (37.18 %) |