0.0.2 • Published 2 months ago

@afuteam-nx/plugin-code-complexity v0.0.2

Weekly downloads
-
License
-
Repository
-
Last release
2 months ago

plugin-code-complexity

对代码仓库执行代码质量的复杂度检查,支持批量项目。

环境

本插件基于 nx 开发,请在对应初始化好的 your-app 中使用

本插件的输入文件建议使用 @afuteam-nx/plugin-add-eslint-type 生成的文件

本插件受益于 @afuteam/eslint-plugin-fe 提供代码 complexity-without-switchcase 规则,改规则基于 complexity,但忽略 switch 语句

安装

pnpm i @afuteam-nx/plugin-code-complexity -D

配置

# 在 apps/your-app/project.json 中配置
"targets": {
  "fetch-repos": {
    "executor": "@afuteam-nx/plugin-code-complexity:run",
    "options": {
      "localFileReposWithAFULintTypePath": "项目清单需要有 AFULintType 字段, allProjectsWithLinType.json",
      "localFilesAllReposCodePath": "本地的要执行 eslint 源代码路径",
      "resultPath": "结果输出路径 文件名 allProjectsWithCodeComplexity.json"
    }
  }
}

使用

nx run your-app:code-complexity

文件数据结构

allProjectsWithLinType.json

[
  {
    "id": 28612,
    "created_at": "2023-11-21T15:23:21.637+08:00",
    "last_activity_at": "2024-03-04T20:41:10.727+08:00",
    "name": "sky",
    "AFULintType": {
      "root": "react-ts"
    },
    "web_url": "https://gitlab.com/afuteam/sky"
  }
]

allProjectsWithCodeComplexity.json

[
  {
    "id": 28005,
    "created_at": "2023-08-22T14:02:51.065+08:00",
    "last_activity_at": "2024-01-04T19:56:40.565+08:00",
    "name": "sky",
    "web_url": "https://gitlab.com/afuteam/sky",
    "complexityDataLength": 3,
    "complexityData": [
      {
        "ruleId": "@afuteam/fe/complexity-without-switchcase",
        "severity": 2,
        "message": "Generator method 'getCurrentAccount' has a complexity of 27. Maximum allowed is 20.",
        "line": 43,
        "column": 23,
        "nodeType": "FunctionExpression",
        "messageId": "@afuteam/fe/complexity-without-switchcase",
        "endLine": 77,
        "endColumn": 6
      },
      {
        "ruleId": "@afuteam/fe/complexity-without-switchcase",
        "severity": 2,
        "message": "Arrow function has a complexity of 22. Maximum allowed is 20.",
        "line": 22,
        "column": 49,
        "nodeType": "ArrowFunctionExpression",
        "messageId": "@afuteam/fe/complexity-without-switchcase",
        "endLine": 338,
        "endColumn": 2
      },
      {
        "ruleId": "@afuteam/fe/complexity-without-switchcase",
        "severity": 2,
        "message": "Arrow function has a complexity of 32. Maximum allowed is 20.",
        "line": 26,
        "column": 59,
        "nodeType": "ArrowFunctionExpression",
        "messageId": "@afuteam/fe/complexity-without-switchcase",
        "endLine": 450,
        "endColumn": 2
      }
    ]
  },
]
0.0.2

2 months ago

0.0.1

3 months ago