You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:PhpStan与Psalm是否检测圈复杂度及能否按级别自定义规则

PhpStan/Psalm圈复杂度检测与自定义规则指南

一、圈复杂度检测配置

PhpStan和Psalm都支持圈复杂度检测,只是默认启用方式或配置入口不同:

PhpStan

  1. 先安装包含圈复杂度规则的严格扩展包:
    composer require --dev phpstan/phpstan-strict-rules
    
  2. 在phpstan.neon配置文件中启用规则并自定义阈值:
    rules:
      - PHPStan\Rules\Strict\CyclomaticComplexityRule
    
    parameters:
      strictRules:
        cyclomaticComplexity: 10 # 设置允许的最大圈复杂度值
    

Psalm

Psalm内置圈复杂度检测,直接在psalm.xml中配置阈值和错误级别:

<psalm>
  <issueHandlers>
    <!-- 类方法的圈复杂度检查 -->
    <TooManyComplexMethods errorLevel="error">
      <minComplexity>10</minComplexity>
    </TooManyComplexMethods>
    <!-- 全局函数的圈复杂度检查 -->
    <TooManyComplexFunctions errorLevel="error">
      <minComplexity>10</minComplexity>
    </TooManyComplexFunctions>
  </issueHandlers>
</psalm>

二、按不同级别自定义规则

两者都支持全局、路径级别的规则定制,以及单个规则的严格度调整:

PhpStan

  1. 单个规则级别调整:给特定规则指定严格程度(级别范围0-9,数字越高规则越严格):
    rules:
      - rule: PHPStan\Rules\Strict\CyclomaticComplexityRule
        level: 5
    
  2. 路径级规则覆盖:针对不同目录/文件设置差异化规则:
    parameters:
      rulesLevel: 7 # 全局默认严格级别
      # 给核心业务目录提升规则严格度
      pathsWithIncreasedStrictness:
        src/Core/:
          rulesLevel: 9
      # 给遗留代码目录禁用圈复杂度检查
      pathsWithExcludedRules:
        src/Legacy/:
          - PHPStan\Rules\Strict\CyclomaticComplexityRule
    
  3. 参考资料:PhpStan官方配置文档(核心配置、规则定制章节)

Psalm

  1. 规则级别与范围定制:给规则设置错误级别,同时指定排除的文件/目录:
    <psalm>
      <issueHandlers>
        <TooManyComplexMethods errorLevel="warning">
          <minComplexity>12</minComplexity>
          <excludeFiles>
            <directory name="src/Legacy"/>
          </excludeFiles>
        </TooManyComplexMethods>
      </issueHandlers>
    </psalm>
    
  2. 路径级单独配置:针对特定目录单独定义规则:
    <psalm>
      <files>
        <directory name="src"/>
        <directory name="src/Legacy">
          <issueHandlers>
            <TooManyComplexMethods errorLevel="suppress"/>
          </issueHandlers>
        </directory>
      </files>
    </psalm>
    
  3. 参考资料:Psalm官方配置文档(Issue Handlers、自定义规则章节)

内容的提问来源于stack exchange,提问作者Mali C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:42:36