搜索/为语言检测代码库添加文件扩展名或新语言

为语言检测代码库添加文件扩展名或新语言

让AI为语言检测代码库添加扩展名或新语言时使用。它会添加真实代码样本,为共用扩展名编写带测试的判定规则,用代码库的脚本生成文件,并在提交前确认使用量证据和许可证。

要使用这个AI规则
## 梳理检测的各部分由哪些文件和工具负责 编辑前,先确定语言检测各部分分别由哪些文件和工具负责: - 管理名称、扩展名、文件名和语言属性的语言注册表; - 用于歧义文件的启发式规则及其实现; - 统计分类器及其真实样本语料库; - 用于语法高亮的语法注册表; - 随项目提供的语法源和缓存的许可证数据; - 维护脚本、测试和持续集成入口。 把这些部分视为相互协调的约定。一次元数据变更可能不只是孤立编辑,还需要样本、启发式规则、生成的标识符、语法数据、测试和证据。 ## 在代码库的开发容器中准备环境,并使用其脚本 如果可用,应优先使用代码库维护的开发容器或托管环境。该环境应提供声明的语言运行时、软件包工具、容器运行时、原生库和项目的全部依赖项。 在本地工作时: 1. 运行标准初始化命令。 2. 通过代码库的依赖运行工具调用库或命令行工具。 3. 使用已记录的维护脚本,不要手工复现其效果。 4. 确认编码检测、代码库访问或语法处理所需的原生依赖项均已就绪。 不要把本地临时调用成功视为受支持环境也一定能通过的证明。 ## 按字母顺序为现有语言添加扩展名,并附上真实样本 为现有语言添加文件扩展名时: 1. 更新权威语言条目。 2. 按要求以区分大小写的字母顺序排列扩展名列表,大写排在小写之前,主要扩展名排在最前。 3. 在所属语言下添加能够代表真实使用情况的样本文件。 4. 如果该扩展名还被另一种语言使用,请提供至少两个样本,并添加消歧启发式规则。 5. 为元数据和启发式行为添加或更新测试。 不要使用简单问候程序等教程中的常见示例作为分类器证据。样本必须反映检测器应该识别的真实代码。 ## 添加新语言时登记语法,并用脚本生成ID 新语言所需的不只是注册表标签: 1. 添加语言条目,但将其生成标识符保持为未设置状态。 2. 通过标准语法工具注册已获批准且兼容的语法高亮定义。 3. 从可验证的原始来源添加有代表性的样本文件。 4. 运行标识符生成脚本,不要手工分配标识符。 5. 如果有任何扩展名被多个语言使用,请提供至少两个样本,并添加经过测试的消歧规则。 6. 一并验证元数据、语法注册、分类结果和生成的变更。 保持注册表头部指引、字段要求以及区分大小写的排序方式不变。 ## 为共用扩展名的语言编写带测试的正则判定规则 启发式规则应解决真实歧义,同时避免造成大范围误报。 - 匹配能够区分竞争语言的最小特征证据。 - 确保每个模式的运行时间与输入大小保持线性关系。 - 避免容易受到正则表达式拒绝服务攻击的结构。 - 只使用代码库规定的正则表达式引擎所支持的语法。 - 测试正例、竞争语言案例和接近判定边界的案例。 - 当启发式规则或样本变更可能改变检测行为时,运行分类器交叉验证。 每条启发式规则都必须有测试。能够识别目标却同时匹配无关文件的规则不可接受。 ## 生成的文件不要手改,用维护命令重新生成 不要手工编辑生成的注册表、模块声明、随项目提供的语法内容或缓存的语法许可证文件。添加或替换语法时,应使用负责该内容的维护命令,并审查该命令产生的所有变更。 接受某个语法定义前: - 确认它与项目所用的语法高亮格式兼容; - 确认其许可证位于批准列表中; - 保留权威原始来源URL和许可证记录; - 在受支持的容器环境中运行该语法专用的验证。 如果生成结果有误,应修正源输入或生成工作流程,而不是直接修补生成结果。 ## 运行分类器交叉验证和完整测试套件 先运行范围最小的相关检查,再执行代码库要求的全部验证: 1. 验证修改过的元数据和排序。 2. 运行新样本和启发式规则的测试。 3. 当检测边界可能移动时,运行分类器交叉验证。 4. 通过标准依赖运行工具执行完整测试套件。 5. 确认持续集成通过相同的必需阶段。 检查失败原因,包括误报、生成文件偏移、缺少原生依赖项、无效语法数据,以及对无关语言的意外变更。 ## 提交前出示使用量证据和样本许可证 提交贡献请求前: - 使用提供的请求模板,只移除无关部分; - 为每个新增扩展名链接公开搜索证据,并排除分叉代码库; - 对常见扩展名展示至少2000个已索引文件;对通常每个代码库只出现一次的名称展示200个文件; - 检查这些文件是否合理分布于不同用户与代码库组合,并考虑占比异常高的用户; - 将每个样本链接到其原始来源,而不是贡献所用的分叉代码库; - 分别说明每个样本代码的许可证; - 通过全部必需测试和持续集成检查; - 保持变更范围集中,不要混入无关重构。 如果有任何要求未满足,就不要提交请求。说明缺少哪项证据、许可证、测试或范围条件,以及必须先完成什么。