fuck-u-code
是一个专用于代码质量分析的工具,它被设计用来检测项目代码的复杂和混乱程度,并给出一个直观的“屎山指数”评分。这个工具通过本地运行,不会联网上传任何代码,保障了代码的安全性。它支持包括Go、JavaScript/TypeScript、Python、Java、C/C++在内的多种主流编程语言。fuck-u-code
从七个核心维度评估代码,例如循环复杂度、函数长度和代码重复度等。它的一个显著特点是能够生成彩色的终端报告,用一种幽默的方式展示分析结果,让代码审查过程不再枯燥。此外,工具还支持将分析报告输出为Markdown格式,方便与AI工具(如ChatGPT)集成或写入团队文档。
Function List
- Multi-language support: 支持分析Go、JavaScript/TypeScript、Python、Java、C/C++、Rust等多种编程语言。
- 屎山指数评分: 提供一个0到100分的质量评分系统。分数越高,代表代码质量越差。
- 七大维度检测: 从循环复杂度、函数长度、注释覆盖率、错误处理、命名规范、代码重复度和代码结构这七个方面评估代码质量。
- 彩色终端报告: 在终端中输出带有颜色和表情符号的分析报告,使结果展示更生动、直观。
- Markdown报告输出: 可以生成结构化的Markdown格式报告,方便开发者将分析结果用于AI工具处理、文档集成或是在CI/CD流程中生成报告。
- 灵活的配置选项: 用户可以通过命令行选项自定义分析行为,例如显示详细报告、设定问题文件的展示数量、排除特定文件或目录等。
- local operation: 工具完全在本地环境运行,不需要联网,不会上传用户代码,确保了代码的隐私和安全。
Using Help
fuck-u-code
是一个命令行工具,主要作用是分析指定路径下的项目代码,并给出一份详细的质量评估报告。
Installation process
你可以选择以下三种方式中的任意一种进行安装。
1. 从源码直接安装(推荐)
如果你的电脑已经配置好Go语言环境,这是最简单的方式。
go install github.com/Done-0/fuck-u-code/cmd/fuck-u-code@latest
运行这个命令后,请确保Go的bin
目录已经添加到了系统的PATH
环境变量中。如果运行时提示command not found
,可以执行以下命令将bin
目录添加到PATH
中(以Linux/Mac为例):
export PATH="$PATH:$(go env GOPATH)/bin"
为了让这个设置永久生效,建议将上面这行命令添加到你终端的配置文件里,例如.bash_profile
maybe.zshrc
The
2. 从源码构建
如果你想自己编译,可以先将代码克隆到本地。
# 克隆仓库
git clone https://github.com/Done-0/fuck-u-code.git
# 进入项目目录
cd fuck-u-code
# 编译生成可执行文件
go build -o fuck-u-code ./cmd/fuck-u-code
编译完成后,会在当前目录下生成一个名为fuck-u-code
的可执行文件。
3. 使用Docker构建
如果你熟悉Docker,也可以通过Dockerfile来构建一个包含此工具的镜像。
docker build -t fuck-u-code .
Usage
基本分析
fuck-u-code
的核心命令是analyze
。你可以指定一个项目路径,工具便会开始分析。
# 分析指定路径的项目
fuck-u-code analyze /path/to/your/project
如果你在某个项目文件夹内,也可以省略路径,工具会默认分析当前目录。
# 分析当前目录
fuck-u-code analyze
如果你使用Docker镜像运行,需要将本地的项目目录挂载到容器中。
# 使用Docker运行分析
docker run --rm -v "/path/to/your/project:/build" fuck-u-code analyze
命令行选项
你可以通过添加不同的选项来控制分析和输出的行为。
options (as in computer software settings) | 简写 | descriptive |
---|---|---|
--verbose |
-v |
显示非常详细的分析报告,包含每个文件的具体问题。 |
--top N |
-t N |
只显示问题最严重的前 N 个文件,默认是5个。 |
--issues N |
-i N |
控制每个文件最多显示 N 个具体问题,默认是5个。 |
--summary |
-s |
只显示最终的总结结论和评分,不展示详细的分析过程。 |
--markdown |
-m |
将输出内容格式化为Markdown,而不是彩色的终端文本。 |
--lang |
-l |
指定报告的输出语言,目前支持中文(zh-CN )和英文(en-US ). |
--exclude |
-e |
排除特定的文件或目录,可以使用多次。例如,--exclude "**/test/**" The |
--skipindex |
-x |
在分析JavaScript/TypeScript项目时,跳过index.js maybeindex.ts Documentation. |
usage example
下面是一些常见的使用场景。
- 进行一次详细的分析
fuck-u-code analyze --verbose
- 只关注最糟糕的3个文件
fuck-u-code analyze --top 3
- 生成一份英文的Markdown报告并保存到文件
这个功能非常适合团队协作和文档记录。fuck-u-code analyze --markdown --lang en-US > report.md
- 在持续集成(CI)中快速检查代码质量
只看总结可以快速判断代码质量是否达标。fuck-u-code analyze --summary
- 分析时排除测试文件和依赖库
fuck-u-code analyze --exclude "**/test/**" --exclude "**/vendor/**"
高级用法:结合AI工具
--markdown
选项是fuck-u-code
一个非常有用的功能。生成的Markdown报告结构清晰,包含了总体评估、各项指标表格、问题文件列表和改进建议。
你可以将这份报告的内容直接复制给AI工具(如ChatGPT、Claude等),然后向它提问,例如:
- “请帮我分析这份代码质量报告。”
- “针对报告中提到的问题,请给出具体的代码重构建议。”
- “请根据这份报告,为我的团队总结前三个需要优先解决的代码质量问题。”
这可以帮助你更快地理解代码中的坏味道,并得到可行的修复方案。
application scenario
- 个人项目自查
开发者在完成一个功能模块或一个个人项目后,可以使用该工具对自己的代码进行一次全面的“体检”。通过查看“屎山指数”和具体问题列表,可以帮助开发者在代码腐化之前就进行重构和优化,养成良好的编码习惯。 - 团队代码审查(Code Review)
在团队协作中,代码审查是一个重要环节。fuck-u-code
可以作为审查前的自动化工具。团队成员在提交代码前先用它进行自查,或者将Markdown报告附在合并请求(Pull Request)中。这不仅提高了审查效率,也让代码质量的讨论变得更客观、数据化,避免了主观争议。 - 评估旧项目(屎山)的维护成本
当需要接手一个陌生的旧项目时,可以使用fuck-u-code
快速对其代码质量进行一次摸底。通过生成的报告,可以大致了解项目的技术债务有多严重,从而更准确地评估后续的维护、重构所需的时间和人力成本。 - 集成到CI/CD流程
可以将fuck-u-code
集成到持续集成(CI)流水线中。例如,在代码合并到主分支之前,自动运行一次代码质量分析。如果分数低于某个设定的阈值,就阻止本次合并。这可以形成一道自动化的质量防线,确保团队的代码质量维持在较高水平。
QA
- 这个工具会上传我的代码吗?安全吗?
这个工具是完全安全的。它在你的本地电脑上运行,整个分析过程不需要连接互联网,更不会以任何形式获取或上传你的代码。 - “屎山指数”评分是如何计算的?分数越高越好吗?
恰恰相反,分数越高代表代码质量越差,代码越有可能是一座“屎山”。这个分数是根据七个维度(如函数长度、代码重复度、注释率等)的检测结果综合计算出来的。0分代表代码质量很高,而100分则表示代码质量非常糟糕。 - 为什么我在Linux或Mac上安装后提示
command not found
?
这通常是因为Go语言环境的bin
目录没有被添加到系统的PATH
环境变量里。你需要手动将它添加进去。可以执行export PATH="$PATH:$(go env GOPATH)/bin"
,并把这行命令加到你终端的配置文件中(如.zshrc
maybe.bash_profile
)使其永久生效。 - 这个工具支持哪些编程语言?
它目前支持多种主流语言,包括Go、JavaScript/TypeScript、Python、Java、C/C++和Rust。 - 分析前端项目时,会把
node_modules
里的文件也算进去吗?
不会。工具默认已经排除了一些常见的前端项目依赖和构建产物目录,例如node_modules
,dist
,build
以及一些压缩过的JS文件(如.min.js
),以确保分析结果的准确性。