Login
Add new policy Variables::ProhibitMatchVars
[gknop/Perl-Critic.git] / TODO
1 #######################################################################
2 #      $URL$
3 #     $Date$
4 #   $Author$
5 # $Revision$
6 ########################################################################
7
8 NEW FEATURES:
9
10 - Report safari sections instead of book page numbers.
11
12 MISC:
13
14 - Need test cases for perlcritc command-line interface.
15  
16 BUGS/LIMITATIONS:
17
18 - Modules::RequireVersionVar
19   - Doesn't enforce three-part versions
20 - NamingConventions::ProhibitAmbiguousNames
21   - Don't allow compound names with forbidden words, like "last_record"
22   - Allow forbidden words in RHS of variable declarations
23
24 OTHER PBP POLICIES THAT SEEM FEASIBLE TO IMPLEMENT:
25
26 - ValuesAndExpressions::ProhibitEscapedCharacters (p54)
27 - ValuesAndExpressions::ProhibitCommaSeparatedStatements (p68)
28 - ValuesAndExpressions::ProhibitMixedBooleanOperators (p70)
29 - ValuesAndExpressions::RequireListParens (p71)
30 - Variables::RequireInitializationForLocalVars (p78)
31 - Variables::RequireLocalizedPunctuationVars (p81)
32 - Variables::ProhibitMatchVars (p82)
33 - Variables::RequireNegativeIndices (p88)
34 - Variables::RequireLexicalForLoopIterator (p108)
35 - Variables::ProhibitTopicChangeInListFunction (p114)
36 - Documentation::RequireSections (p133, p138)
37   List the required the =head1 entries in an ordered list
38   Make that list overrideable in perlcriticrc
39 - Documentation::RequirePodAtEnd (p139,p140)
40 - Documentation::PodSpelling (p148)
41   Base it on Pod::Spell or Test::Spelling
42   Add a "=for stopwords" section for words to skip, as per Pod::Spell
43 - BuiltinFunctions::RequireSimpleSortBlock (p149)
44   Only allow one statement in the sort block
45   Programmer can use a sort function or Schwartzian Transform
46 - BuiltinFunctions::ProhibitReverseSortBlock (p152)
47   Don't allow first instance of $b to be before first instance of $a
48 - Subroutines::ProhibitSubSigil (p175)  [DONE]
49 - Subroutines::RequireArgUnpacking (p178)
50   Ensure that the first child of a sub is PPI::Statement::Variable
51 - Subroutines::ProhibitManyArgs (p182)
52   If first PPI::Statement::Variable is a list "my", make sure is less than N elements
53   Otherwise make sure there are less than N PPI::Statement::Variables in a row at begin
54 - InputOutput::RequireErrorChecking (p208)
55   Forbid open, print, close in void context
56 - InputOutput::RequireBriefOpen (p209)
57   Make sure there's a close within N statements of an open, both with same lexical FH
58 - InputOutput::ProhibitReadlineWithFor (p211)
59 - InputOutput::ProhibitJoinedReadline (p213)
60 - InputOutput::ProhibitExplicitStdin (p216)
61 - InputOutput::RequireBracesOnPrintFilehandle (p217)
62 - InputOutput::ProhibitInteractiveTest (p218)
63   Forbid -t operand
64 - References::ProhibitMultipleSigils (p228) [DONE]
65 - RegularExpressions::RequireBracesForMultiline (p242)
66 - RegularExpressions::ProhibitUnusualDelimiters (p246)
67 - RegularExpressions::ProhibitEscapedMetacharacters (p247)
68 - RegularExpressions::ProhibitEnumeratedClasses (p248)
69   This will be avoided for ASCII-only code
70 - RegularExpressions::ProhibitUnusedCapture (p252)
71   Look for LHS of regexp or use of $1, $2, ... before next regexp
72 - RegularExpressions::ProhibitCaptureWithoutTest (p253)
73   $1, $2, ... must be inside conditional with no preceding regexp
74 - RegularExpressions::ProhibitComplexRegexps (p261)
75   If regexp is longer than N characters/lines, require it be split into qr// pieces
76 - RegularExpressions::ProhibitSingleCharAlternation (p265)
77   Not sure if this is easy or hard.  Need to look at what PPI emits for regexps.
78 - RegularExpressions::ProhibitFixedStringMatches (p271)
79   Can't be qr/\s*\\A\s*\((?:\?:)?(?:\s*\w+\s*\|)*\s*\w+\s*\)\s*\\z/
80   or qr/\s*\\A\s*\w+\s*\\z/
81 - ClassHierarchies::ProhibitExplicitISA (p360)
82 - ClassHierarchies::ProhibitAutoload (p393)
83 - TestingAndDebugging::ProhibitProlongedStrictureOverride (p443)
84 - Miscellanea::ProhibitFormats (p449)
85 - Miscellanea::ProhibitTies (p451)