Skip to content
Perl::Critic::Policy::logicLAB::ProhibitShellDispatch - simple policy prohibiting shell dispatching
Perl
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib/Perl/Critic/Policy/logicLAB
t
.gitignore
.travis.yml
Changes
MANIFEST.SKIP
README.mkdn
dist.ini

README.mkdn

CPAN version Build Status Coverage Status

NAME

Perl::Critic::Policy::logicLAB::ProhibitShellDispatch - simple policy prohibiting shell dispatching

AFFILIATION

This policy is a policy in the Perl::Critic::logicLAB distribution.

VERSION

This documentation describes version 0.05

DESCRIPTION

Using Perl builtins to dispatch to external shell commands are not particularly portable. This policy aims to assist the user in identifying these critical spots in the code and exchange these for pure-perl solutions and CPAN distributions.

The policy scans for: system, exec, qx and the use of backticks, some basic examples.

system "touch $0.lock";

exec "touch $0.lock";

my $hostname = qx/hostname/;

my $hostname = `hostname`;

Instead use the Perl builtins or CPAN distributions. This will make you distribution easier to control and easier to distribute across platforms.

#hostname
use Net::Domain qw(hostname);

Using CPAN distributions and Perl builtins makes it easier to distribute your code and defined you requirements to platforms in your build system.

Additional examples and remedies are most welcome, since I would love to write a 101 demonstrating violations and their remedies.

CONFIGURATION AND ENVIRONMENT

This Policy is not configurable except for the standard options.

DEPENDENCIES AND REQUIREMENTS

INCOMPATIBILITIES

This distribution has no known incompatibilities.

BUGS AND LIMITATIONS

This distribution has no known bugs or limitations.

As pointed out in bug report RT:91542, some modules and components might implement methods/routines holding names similar to the builtins system, exec, qx and similar. I had not anticipated this when first implementing the policy and I expect there will be more cases where the current implementation does not handle this well, please file a bugreport if you run into one of these issues and I will investigate and address accordingly.

BUG REPORTING

Please use Requets Tracker for bug reporting:

http://rt.cpan.org/NoAuth/Bugs.html?Dist=Perl-Critic-Policy-logicLAB-ProhibitShellDispatch

TEST AND QUALITY

The following policies have been disabled for this distribution

See also t/perlcriticrc

TEST COVERAGE

---------------------------- ------ ------ ------ ------ ------ ------ ------
File                           stmt   bran   cond    sub    pod   time  total
---------------------------- ------ ------ ------ ------ ------ ------ ------
.../ProhibitShellDispatch.pm  100.0  100.0   83.3  100.0  100.0  100.0   98.5
Total                         100.0  100.0   83.3  100.0  100.0  100.0   98.5
---------------------------- ------ ------ ------ ------ ------ ------ ------

SEE ALSO

AUTHOR

  • Jonas B. Nielsen, jonasbn <jonasbn@cpan.org>

ACKNOWLEDGEMENTS

  • Johan the Olive, bug reporting on Net::OpenSSH's system (RT:91542)
  • Adam Kennedy, author of PPI
  • Jeffrey Ryan Thalhammer, author of Perl::Critic

LICENSE AND COPYRIGHT

Copyright (c) 2013-2014 Jonas B. Nielsen. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Something went wrong with that request. Please try again.