关于 perl-lint
perl-lint 是面向 Perl 开发者的代码检查与格式化技能,指导使用 Perl::Critic 和 perltidy,并涵盖工具检测、严重级别及配置。
主要功能
- 01检测 Perl::Critic 和 perltidy
- 02按严重级别分析代码
- 03说明问题及其严重程度
- 04指导使用 perltidy 格式化
- 05介绍项目配置文件
适用场景
- 01检查 Perl 脚本的策略违规
- 02按项目规范格式化 Perl 文件
- 03为代码审查选择检查级别
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jamie-bitflight/ claude_skills --skill perl-lint安装后在 Claude Code 中输入/perl-lint确认已加载。
附带文件references/code-examples.md
详细介绍
Perl 检查与格式化
自动检测工具,运行 Perl::Critic 分析和 perltidy 格式化。
工作流
- 检查是否已安装 perlcritic/perltidy
- 对指定文件运行分析
- 按严重级别报告发现的问题
- 建议修复方法或格式化代码
工具检测
首先,确认工具是否可用:
# Check perlcritic
command -v perlcritic >/dev/null && echo "perlcritic available" || echo "Install: cpanm Perl::Critic"
# Check perltidy
command -v perltidy >/dev/null && echo "perltidy available" || echo "Install: cpanm Perl::Tidy"
Perl::Critic 分析
运行 perlcritic
# Default analysis (severity 5 - gentle)
perlcritic script.pl
# All severities (1 = strictest)
perlcritic --severity 1 script.pl
# Specific severity level
perlcritic --severity 3 script.pl
# With verbose explanations
perlcritic --verbose 11 script.pl
# Single policy
perlcritic --single-policy RequireUseStrict script.pl
# Exclude policies
perlcritic --exclude RequireUseWarnings script.pl
严重级别
| 级别 | 名称 | 描述 |
|---|---|---|
| 5 | 温和 | 明显且毫无歧义的问题 |
| 4 | 严格 | 通常是不良实践 |
| 3 | 严厉 | 有争议但建议遵循 |
| 2 | 苛刻 | 对风格更加挑剔 |
| 1 | 严酷 | 最严格 |
常见策略
| 策略 | 严重级别 | 问题 |
|---|---|---|
| RequireUseStrict | 5 | 缺少 use strict |
| RequireUseWarnings | 4 | 缺少 use warnings |
| ProhibitBarewordFileHandles | 5 | 使用裸字文件句柄 |
| ProhibitTwoArgOpen | 5 | 使用双参数 open() |
| ProhibitStringyEval | 5 | 使用字符串调用 eval |
| RequireTidyCode | 1 | 代码未格式化 |
配置文件
在项目根目录中创建 .perlcriticrc:
# .perlcriticrc
severity = 3
verbose = 8
theme = core
# Exclude specific policies
[-Documentation::RequirePodSections]
[-InputOutput::RequireBriefOpen]
# Configure specific policy
[CodeLayout::RequireTidyCode]
perltidyrc = .perltidyrc
[Variables::ProhibitPackageVars]
packages = Data::Dumper File::Find
[TestingAndDebugging::ProhibitNoStrict]
allow = refs
详细输出格式
| 级别 | 输出格式 |
|---|---|
| 1 | 仅行号 |
| 4 | 行号 + 列号 |
| 8 | 行号 + 策略 + 严重级别 |
| 10 | 完整说明 |
| 11 | 包含 PBP 页面参考 |
Perltidy 格式化
基本用法
# Format file (creates .bak backup)
perltidy script.pl
# Format to stdout (no backup)
perltidy -st script.pl
# In-place edit (no backup)
perltidy -b -nst script.pl
# Check if tidy (exit code)
perltidy -st script.pl | diff -q - script.pl
常见选项
# Basic formatting
perltidy -i=4 -ci=4 -l=100 script.pl
# Full command with common options
perltidy \
--indent-columns=4 \
--continuation-indentation=4 \
--maximum-line-length=100 \
--vertical-tightness=2 \
--paren-tightness=1 \
--brace-tightness=1 \
script.pl
配置文件
在项目根目录中创建 .perltidyrc:
# .perltidyrc
# Indentation
--indent-columns=4
--continuation-indentation=4
# Line length
--maximum-line-length=100
# Blank lines
--blank-lines-before-subs=1
--blank-lines-after-block-opening=0
# Spaces
--paren-tightness=1
--brace-tightness=1
--square-bracket-tightness=1
# Vertical alignment
--no-outdent-long-quotes
--no-outdent-long-comments
# Output
--backup-and-modify-in-place
--backup-file-extension=/
组合工作流
检查并修复
解读结果
严重级别 5(严重)
必须立即修复:
Bareword file handle opened at line 10, column 1.
Two-argument "open" used at line 15, column 5.
修复方法:
# Wrong
open FILE, $filename;
# Correct
open my $fh, '<', $filename;
严重级别 4(重要)
应该修复:
Code before strictures are enabled at line 1.
修复方法:
# Add at top
use strict;
use warnings;
严重级别 3(建议)
考虑修复:
Regular expression without "/x" flag at line 25.
安装
如果缺少工具:
# Install both tools
cpanm Perl::Critic Perl::Tidy
# Verify installation
perlcritic --version
perltidy --version
快速命令
检查指定文件:
perlcritic --severity 4 --verbose 8 path/to/file.pl
检查目录中的所有 Perl 文件:
find . -name '*.pl' -o -name '*.pm' | xargs perlcritic --severity 4
格式化所有文件:
find . -name '*.pl' -o -name '*.pm' | xargs perltidy -b
评论
支持 Markdown