utilCode(通用工具)招募

发布人:仓颉技术交流平台官方
分类:工具库 / 通用工具

为促进鸿蒙生态及仓颉编程语言的发展,现招募开发者共同参与基于仓颉语言的通用工具库开发项目。本项目旨在运用仓颉语言开发一个功能完善、结构清晰的通用工具库。该项目灵感来源于社区中成熟的工具库(如 OpenHarmony 社区的 utilCode),目标是构建一个专为仓颉语言设计的高质量基础组件集合,为后续的开发者提供可靠的工具支持,降低开发门槛。

等待接取
2025-11-20
19

悬赏内容

招募内容

一、 项目概述

为系统性地构建鸿蒙生态下仓颉语言的开发者基础设施,我们正式启动一项公益性开源项目,旨在创建一款在架构设计、代码质量、测试覆盖率和文档完备性上均达到生产级标准的通用工具库。本项目旨在为仓颉语言开发者提供一套可靠、高效的基础工具集,降低日常开发复杂度。

本项目完全以社区驱动的方式运作,聚焦于技术贡献与代码质量,不涉及任何商业报酬。我们诚邀追求卓越、熟悉仓颉语言的开发者加入,共同打造一个未来可被广泛信赖和使用的开源资产。

二、 项目目标与详细范围

本项目的核心交付物是一个模块化、可扩展的仓颉语言工具库。其初步范围规划如下,贡献者可选择其中一个或多个模块进行实现:

表1:工具库核心模块清单

模块类别

核心功能点

具体验收要求

设备与系统工具

获取设备型号、OS版本、屏幕密度、内存信息等。

信息准确,对无法获取的信息有安全的降级处理。

安全与加密工具

实现MD5、SHA-256哈希算法,提供Base64编解码。

算法实现需符合标准,输出结果与主流工具库一致。

时间与日期工具

时间戳转换、日期格式化(含国际化考量)、日期差值计算。

正确处理时区,格式化字符串灵活可配置。

存储与缓存工具

轻量级键值对持久化、文件读写安全封装(防并发写入冲突)。

提供清晰的读写接口,处理所有可能的IO异常。

网络状态工具

检测网络连接状态(Wi-Fi/蜂窝)、监听网络状态变化。

状态监听机制稳定,无内存泄漏风险。

三、 质量认证与专业技术要求

本项目对代码质量设有极高要求,所有贡献代码需通过以下多维度的质量认证。

1. 代码规范与架构设计

  • 编码规范:​ 代码必须严格遵守仓颉语言官方代码风格指南。

    • 命名规范:​ 类名采用大驼峰,方法/变量采用小驼峰,常量采用全大写+下划线

    • 代码格式:​ 缩进、空格、换行需统一。

  • 架构设计原则:

    • 单一职责原则:​ 每个类/函数应只负责一个明确的功能点。

    • 依赖注入:​ 鼓励使用接口抽象和依赖注入来降低模块耦合度,以提高代码的可测试性。

代码示例:良好的接口设计与实现分离java

// 1. 定义加密工具接口,便于后续测试和扩展
public interface HashUtils {
    // 使用文档注释清晰说明功能、参数和返回值
    /**
     * 计算字符串的 SHA-256 哈希值,并以十六进制字符串形式返回。
     *
     * @param input 待计算的原始字符串
     * @return 长度为64的十六进制哈希字符串,输入为空时返回空字符串。
     */
    hashSha256(input: string): string;
}

// 2. 提供该接口的标准实现
public class StandardHashUtils implements HashUtils {
    public hashSha256(input: string): string {
        // 具体的算法实现...
    }
}

// 3. 通过依赖注入使用,而非硬编码实例化
public class MyService {
    private hashUtils: HashUtils;

    // 通过构造器注入依赖
    public init(hashUtils: HashUtils): void {
        this.hashUtils = hashUtils;
    }

    public processData(data: string): void {
        let hash = this.hashUtils.hashSha256(data);
        // ... 其他逻辑
    }
}

2. 测试覆盖率与健壮性

  • 单元测试:​ 每个公开API必须有对应的单元测试。我们要求合并入主分支的代码需满足以下硬性指标:

    表2:单元测试覆盖率要求

    测试覆盖率类型

    最低要求

    目标要求

    行覆盖率

    90%

    95%+

    分支覆盖率

    85%

    90%+

  • 测试用例设计:​ 测试应覆盖正常流程边界条件(如空值、极值)和异常场景

代码示例:对应的单元测试

// 对 HashUtils.hashSha256 方法的单元测试
// 使用 @Test 注解等仓颉语言测试框架特性
@Test
public testHashSha256(): void {
    // 1. 准备 (Arrange)
    let hashUtils: HashUtils = new StandardHashUtils();
    let testInput = "Hello, Cangjie!";
    let expectedHash = "8f7d..."; // 此处应为预先计算好的正确哈希值

    // 2. 执行 (Act)
    let actualHash = hashUtils.hashSha256(testInput);

    // 3. 断言 (Assert)
    Assert.equals(expectedHash, actualHash);
}

@Test
public testHashSha256WithEmptyInput(): void {
    // 测试边界条件:空字符串
    let hashUtils: HashUtils = new StandardHashUtils();
    let result = hashUtils.hashSha256("");
    Assert.equals("", result); // 根据验收要求,空输入返回空字符串
}

3. 工程化与文档完备性

  • 构建与依赖:​ 项目必须提供清晰的构建脚本(如 build.sh),能够一键完成编译、测试、打包。依赖管理应简洁明确。

  • API 文档:​ 所有公开的类、方法、参数必须使用仓颉语言的文档注释标准。项目需能自动化生成API文档站点。

  • README.md:​ 必须提供详尽的说明文档,至少包含:

    • 项目简介和特性列表

    • 快速入门指南

    • 详细的API使用示例

    • 贡献指南(指向本招募公告)

四、 贡献流程与评审标准

  1. 意向沟通:​ 贡献者请在本帖或项目仓库的Issue中声明意向,并说明计划贡献的模块。

  2. Fork & PR:​ 遵循标准的GitHub/GitCode工作流:Fork仓库 -> 创建功能分支 -> 开发 -> 提交Pull Request。

  3. 自动化流水线:​ 每个PR将自动触发CI/CD流水线,执行编译、静态代码分析和单元测试覆盖率检查。未能通过自动化检查的PR将不会被人工评审。

  4. 人工评审:​ 项目维护者将进行深度代码评审,评审维度如下:

    评审维度

    权重

    关注点

    架构与设计

    30%

    代码结构、模块划分、扩展性、是否符合设计原则。

    代码质量与规范

    25%

    可读性、命名、注释、是否遵循编码规范。

    测试覆盖率与质量

    25%

    测试用例的完备性、设计的合理性。

    文档完整性

    20%

    API文档、README、代码内注释是否清晰准确。

  5. 合并与认证:​ 通过全部评审的代码将被合并。优秀的贡献者将被邀请成为项目的长期维护者。

相关附件

暂无附件

质量认证要求

交付件

NO

交付件描述

备注

1

三方库源代码

源代码

2

三方库测试方案和用例

测试用例和文档

3

用户手册,API文档,设计文档,license文档

 资料和文档

验收标准

1.功能

  1. 三方库必须有明确的功能;

  2. 如果参考对标库移值开发,功能与参考三方库保持一致。

2.资料

  1. Readme:包含简介,软件架构,目录结构,下载安装(编译构建),接口说明,使用示例,约束限制,开源协议,参与贡献等内容;

  2. Changelog,三方库版本需包含基本的修改说明。

3.标准遵从性(可选),三方库实现需满足对应协议或行业标准,举例

  1. appquth:支持对OAuth 的PKCE扩展;

  2. icu4j:支持unicode标准库,通用字符集ISO/IEC 10646。

4.性能目标

  1. 性能敏感三方库接口运行性能持平对标三方库

5.开源协议遵从,必须包含License文件

  1. 放置合适的开源License协议,建议Apache License Version 2.0;

  2. 引用或参考开源三方库,需遵从开源协议。

6.网络安全要求

  1. 满足基础的网络安全红线及隐私要求,符合安全编码规范。

过程质量要求

指标分类

指标名称

指标要求

度量工具

牵引 OR Must

代码度量

平均文件代码行

≤300 LOC

CMetricsPlus,CJMetric

Must

总文件重复率

C/C++≤4%;相比开源不劣化

CMetricsPlus,CJMetric

Must

源文件重复率

C/C++≤4%;相比开源不劣化

CMetricsPlus,CJMetric

Must

平均函数或方法代码行*

≤30  LOC

CMetricsPlus,CJMetric

Must

总代码重复率

C/C++≤10%;相比开源不劣化

CMetricsPlus,CJMetric

Must

源文件代码重复率

C/C++≤10%;相比开源不劣化

CMetricsPlus,CJMetric

Must

平均圈复杂度

≤5;相比开源不劣化

CMetricsPlus,CJMetric

Must

冗余代码

“0” 【2】;

CMetricsPlus,CJMetric

Must

不安全函数

NA

CMetricsPlus,CJMetric

Must

静态检查

编译告警

“0” 【2】

Compile工具

牵引

通用静态告警

“0” 【2】

Pclint plus,CJLINT

Must

开发者测试

DT用例密度(个/KLOC)

> 40

手工

牵引 

DT代码语句覆盖率

>=85%

Gcov,cjcov

牵引

DT代码分支覆盖率

>=50%

Gcov,cjcov

牵引

未做DT文件数

0

手工

牵引

问题解决率

遗留问题DI

整体<10

Issue

牵引 

遗留致命缺陷数(0)

0

Issue

Must

累计缺陷解决率

85%

Issue

牵引 

软件开发

每日构建成功率

100%

CI

牵引

测试评估

测试缺陷密度(/KLOC)

5-9

人工

牵引

测试用例密度(个/KLOC)

20-40

人工

牵引

初验用例自动化率

100%

CIDA

牵引 

HLT自动化用例比率

【85%,95%】

CIDA

牵引 

开源第三方(含构建工具)

开源片段引用

0(除例外备案类)

FOSSBOT+人工

Must

可信构建

二进制一致性

0(含可澄清)

人工

Mus