RandomCodeSpace/code-signal

GitHub: RandomCodeSpace/code-signal

一款零外部依赖、完全离线的多语言仓库代码质量聚合扫描 CLI 工具。

Stars: 0 | Forks: 0

# code-signal ### 面向多语言仓库的内置、离线代码质量信号 **聚合静态扫描报告。无遥测。无外部分析器。无单文件泄露。**

CI Security Perf Gate SonarCloud Quality Gate

OpenSSF Best Practices OpenSSF Scorecard License

## 功能 code-signal 是一个独立的 Go CLI,用于扫描仓库并报告聚合的代码质量信号:评分、问题总数、问题类别、规则计数、检测到的语言/模块以及重复密度。它专为本地开发者机器、CI 任务和物理隔离环境而设计。 该扫描器特意**不**调用 PMD、ESLint、Ruff、ShellCheck、Hadolint、SonarQube 或任何其他项目提供的分析器。每一条规则都内置在二进制文件中并且是确定性的。 ## 安装 ``` go install github.com/randomcodespace/code-signal/cmd/scanner@latest ``` 或者从源码构建: ``` git clone https://github.com/RandomCodeSpace/code-signal.git cd code-signal go build -trimpath -o scanner ./cmd/scanner ``` ## 快速开始 ``` # 扫描当前 repository scanner scan . # 输出聚合 JSON scanner scan . --json # 检测语言和 module root scanner detect . # 比较完整的本地 git 快照 scanner diff --base main --head HEAD . # 检查离线就绪状态 scanner doctor ``` 完成的 `scan`、`diff` 和 `detect` 命令在生成报告后会以退出码 `0` 退出,即使在质量评分很差或检测到回归时也是如此。非零退出码专门用于 CLI 使用错误、无效配置、本地 git/runtime 错误、上下文取消以及输出写入失败。 ## 内置规则 当前规则集:`0.5.0`。 | 规则 | 类别 | 严重程度 | 信号 | |---|---|---:|---| | `generic.long-line` | style | warning | 超过配置最大长度(默认为 120)的行。 | | `generic.trailing-whitespace` | style | warning | 尾部的空格或制表符。 | | `generic.todo` | maintainability | info | 注释中的 `TODO`、`FIXME` 和 `HACK` 标记。 | | `generic.duplicate-block` | maintainability | warning | 重复的规范化 10 行逻辑窗口。 | | `generic.deep-nesting` | complexity | warning | Python 缩进嵌套以及类 C 语言的大括号控制嵌套。 | | `generic.risky-shell` | security | error | 危险的 shell 模式,例如 `curl | sh`、`wget | bash` 以及危险的 `rm -rf` 目标。 | | `generic.merge-conflict` | bug | error | 未解决的 git 冲突标记。 | | `generic.parse-json` | bug | error | 无效的 JSON。 | | `generic.parse-go` | bug | error | 无效的 Go 语法。 | | `generic.go-complexity` | complexity | warning | Go 圈复杂度超过 15。 | | `generic.generated-skip` | maintainability | info | 生成、压缩、vendor 和构建输出跳过策略的元数据。 | 这些都是真实的检查,而不是占位符。它们的目的不是提供与 SonarQube 兼容的计数;而是 code-signal 自身确定性的质量信号。 ## 支持的语言 code-signal 通过内置的词法/解析器检查来检测和分析以下语言: `go`、`javascript`、`typescript`、`python`、`ruby`、`rust`、`java`、`csharp`、`php`、`shell`、`dockerfile`、`json`、`toml`、`yaml`。 检测机制会使用扩展名、shebang 以及常见的清单文件,例如 `go.mod`、`package.json`、`pyproject.toml`、`Cargo.toml`、`pom.xml`、Gradle 文件、`.csproj`、`.sln`、`composer.json`、`Gemfile`、`Dockerfile`、`Containerfile` 和 `*.dockerfile`。 ## 配置 配置是可选的。如果存在,将从扫描的仓库根目录或通过 `--config` 加载 `scanner.json`。 ``` { "scan": { "default_timeout_seconds": 30, "max_file_bytes": 1048576, "follow_symlinks": false, "workers": 0 }, "score": { "fail_under": 75, "error": 10, "warning": 4, "info": 1 }, "diff": { "fail_on_score_drop": true, "max_allowed_new_errors": 0, "category_regression_threshold": 1 } } ``` 未知的配置字段和冗余的 JSON 值将被拒绝。 ## 隐私与输出契约 报告仅包含聚合数据。Facts 和报告 JSON 不包含文件路径、行/列坐标、代码片段、克隆组、单文件发现或源代码文本。扫描器仅读取本地文件和本地 git 对象;它不执行遥测、更新检查、远程规则下载、包安装或任何网络调用。 ## 开发 ``` go test ./... go vet ./... go run ./cmd/scanner scan . ``` Main 分支受保护。功能开发应使用分支和 pull request。必要的检查反映了 `RandomCodeSpace/codeiq` 所使用的 CI/安全模式:Go vet/test/static analysis、OSS 安全扫描器、重复项检查、SBOM 生成、perf/self-scan 检查以及 OpenSSF Scorecard。 ## 许可证 MIT。详情请见 [LICENSE](LICENSE)。
标签:EVTX分析, Go, Homebrew安装, Ruby工具, SOC Prime, 开发工具, 报告聚合, 文档结构分析, 日志审计, 静态扫描