$s = <<'EOF'; perl_checker

Goals of perl_checker

Get it

CVS source

Implemented features

white space normalization
enforce a similar coding style. In many languages you can find a coding style document (eg: the GNU one). TESTS=force_layout.t
disallow complex expressions
perl_checker try to ban some weird-not-used-a-lot features. TESTS=syntax_restrictions.t
suggest simpler expressions
when there is a simpler way to write an expression, suggest it. It can also help detecting errors. TESTS=suggest_better.t
context checks
Perl has types associated with variables names, the so-called "context". Some expressions mixing contexts are stupid, perl_checker detects them. TESTS=context.t
function call check
detection of unknown functions or mismatching prototypes (warning: since perl is a dynamic language, some spurious warnings may occur when a function is defined using stashes). TESTS=prototype.t
method call check
detection of unknown methods or mismatching prototypes. perl_checker doesn't have any idea what the object type is, it simply checks if a method with that name and that number of parameters exists. TESTS=method.t
return value check
dropping the result of a functionnally pure function is stupid. using the result of a function returning void is stupid too. TESTS=return_value.t
detect some Perl traps
some Perl expressions are stupid, and one gets a warning when running them with perl -w. The drawback are perl -w is the lack of code coverage, it only detects expressions which are evaluated. TESTS=various_errors.t

Todo

Functionalities that would be nice: EOF my $_rationale = <<'EOF';

Rationale

Perl is a big language, there is ThereIsMoreThanOneWayToDoIt. It has advantages but also some drawbacks for team project: