DecSec2030/eslint-plugin-find-duplicates

GitHub: DecSec2030/eslint-plugin-find-duplicates

一个 ESLint 插件,通过底层 Go 二进制对代码结构进行规范化与哈希比对,检测 TypeScript、React、Vue 和 Svelte 项目中的结构化重复代码块。

Stars: 0 | Forks: 0

# eslint-plugin-find-duplicates [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39faa54be350a1dab8afd3b2fb8c1c83e4d9cff84abfef2374d19a18053687c4.svg)](https://github.com/DecSec2030/eslint-plugin-find-duplicates/actions/workflows/ci.yml) [![Release](https://static.pigsec.cn/wp-content/uploads/repos/cas/42/42ba98a60a0bb3b0ad908f024db145f9c5b831eb7df822f56ac578ee7d7215b3.svg)](https://github.com/DecSec2030/eslint-plugin-find-duplicates/actions/workflows/release.yml) [![Latest Release](https://img.shields.io/github/v/release/DecSec2030/eslint-plugin-find-duplicates?display_name=tag&style=flat)](https://github.com/DecSec2030/eslint-plugin-find-duplicates/releases/latest) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) **ESLint plugin** 用于检测 TypeScript、React、Vue 和 Svelte 项目中的**结构化代码重复**。 由 [find-duplicates](https://github.com/DecSec2030/find-duplicates) 提供支持 —— 这是一个 Go 二进制程序,会在比较代码结构之前对标识符、字符串和空白字符进行规范化处理。 ## 安装 ### 下载 .tgz(推荐) ``` # 从 GitHub Releases 下载 curl -L -o eslint-plugin-find-duplicates.tgz \ https://github.com/DecSec2030/eslint-plugin-find-duplicates/releases/latest/download/eslint-plugin-find-duplicates-*.tgz npm install ./eslint-plugin-find-duplicates.tgz ``` ### 从 GitHub 克隆 ``` git clone https://github.com/DecSec2030/eslint-plugin-find-duplicates.git cd eslint-plugin-find-duplicates npm install ``` `postinstall` 脚本会自动为您的平台(Linux/macOS/Windows,amd64/arm64)下载匹配的 `find-dups` 二进制文件。如果下载失败,请从 Releases 中获取二进制文件: ``` curl -L -o /usr/local/bin/find-dups \ https://github.com/DecSec2030/eslint-plugin-find-duplicates/releases/latest/download/find-dups-linux-amd64 chmod +x /usr/local/bin/find-dups ``` 然后在您的 ESLint 配置中链接或引用该插件。 ## 用法 ### ESLint 8(旧版配置) ``` // .eslintrc.js module.exports = { plugins: ['find-duplicates'], rules: { 'find-duplicates/no-duplicates': ['warn', { minOccurrences: 2, minLines: 5, ignorePatterns: ['__DEV__'], }], }, }; ``` ### ESLint 9(扁平化配置) ``` // eslint.config.js import findDuplicates from 'eslint-plugin-find-duplicates'; export default [ { plugins: { 'find-duplicates': findDuplicates }, rules: { 'find-duplicates/no-duplicates': ['warn', { minOccurrences: 2, minLines: 5, ignorePatterns: ['__DEV__'], }], }, }, ]; ``` ## 选项 | 选项 | 类型 | 默认值 | 描述 | |--------|------|---------|-------------| | `minOccurrences` | number | `2` | 报告所需的最小出现次数 | | `minLines` | number | `5` | 代码块的最小行数 | | `ignorePatterns` | string[] | `[]` | 要忽略的模式(可重复) | ## 工作原理 1. 当 ESLint 启动时,该规则会在您的项目根目录运行一次 `find-dups --json` 2. 该二进制程序会扫描所有 `.ts`、`.tsx`、`.vue`、`.svelte` 文件 3. 代码块会被规范化(剥离标识符、字符串和空白字符)并进行哈希处理 4. 相同的哈希值将被分组为结构化重复 5. 结果会在整个 ESLint 会话期间进行缓存 6. ESLint 处理的每个文件都会与结果进行比对检查 ## 二进制文件回退 如果自动下载失败,请确保 `find-dups` 可在您的 `PATH` 中找到: ``` # 手动下载 curl -L -o /usr/local/bin/find-dups \ https://github.com/DecSec2030/find-duplicates/releases/latest/download/find-dups-linux-amd64 chmod +x /usr/local/bin/find-dups ``` ## 生态系统 | 包名 | 安装方式 | |---------|---------| | `eslint-plugin-find-duplicates` | 从 [GitHub Releases](https://github.com/DecSec2030/eslint-plugin-find-duplicates/releases/latest) 下载 `.tgz` | | `code-analytics` | 从 [GitHub Releases](https://github.com/DecSec2030/code-analytics/releases/latest) 下载二进制文件 | | `find-duplicates` | 从 [GitHub Releases](https://github.com/DecSec2030/find-duplicates/releases/latest) 下载二进制文件 | | `find-dead-code` | 从 [GitHub Releases](https://github.com/DecSec2030/find-dead-code/releases/latest) 下载源码 | ## 许可证 MIT
标签:ESLint插件, SOC Prime, 云安全监控, 代码查重, 前端, 开发工具, 日志审计, 自定义脚本, 静态分析