#source-file #expert-system #linguist #source-code #linguist-heuristics

bin+lib file-expert

识别源代码文件的专家系统,类似于 GitHub/linguist

3 个版本 (稳定版)

1.1.0 2022年5月9日
1.0.0 2021年9月19日
1.0.0-alpha.02021年9月6日

#835 in 开发工具

AGPL-3.0-or-later

220KB
4.5K SLoC

file-expert

一个识别源代码文件的专家系统,类似于 GitHub/linguist,但用 Rust 编写。

用法

file-expert FILE…

程序还可以像这样读取来自 STDIN 的文件

git ls-files|file-expert

输出格式

每行输出包含文件名和文件类型,由制表符分隔。

输出示例

.gitignore      Ignore List
.gitlint.yaml   YAML
.gitmodules     Git Config
COPYING.md      Markdown
Makefile.am     Makefile
README.md       Markdown
configure.ac    M4Sugar
extra-extensions-kb.pl  Prolog
file-expert.pl  Prolog
heuristics.yml  YAML
languages.yml   YAML
m4/BKG_DIRECTORY_VARIABLES.m4   M4Sugar
m4/BKG_ENABLE_XDG.m4    M4Sugar
m4/BKG_PACKAGE_INFO.m4  M4Sugar
run-tests       Shell
transform.py    Python

安装

构建依赖

  • cargo

通过 Cargo

carg install file-expert

从源码安装

⒈ 检出此存储库 git clone https://github.com/kalkin/file-expert.

⒉ 运行 cargo install --path . 以构建和安装它。

当前状态

在生产中。

版本控制

该项目使用 SemVer 进行版本控制。有关可用版本,请参阅此存储库的 标签

历史

大约从2017年11月开始。2018年12月用 Nim 实现替代,因为此时 GitHub/linguist 启发式是一个巨大的 Ruby 番茄酱代码。

该项目直到2019年1月才存档。我的 Nim 实现被编译器更新破坏了。在修复它的时候,我发现 GitHub/linguist 启发式已经重构到一个 YAML 文件中。这为轻松自动生成启发式规则打开了可能。所以我又开始在 Prolog 实现上工作。

在2021年6月的 COVID-19 夏季,我足够熟练地用 Rust 重写了这个项目。主要好处是性能的大幅提升。

许可证

该项目根据 GNU Affero 通用公共许可证授权——有关详细信息,请参阅 COPYING.md 文件。

作者

由 Bahtiar `kalkin-` Gadimov 编写。

依赖项

~7-10MB
~197K SLoC