已开启
【质量加固】AutoFusion定向“质量加固”社区有奖任务 #238
wangmingming创建于  8 天前
wangmingming成员
8 天前 创建

"质量加固"社区活动有奖活动

一、任务背景

为进一步提升CANN开源社区代码质量,引导开发者关注代码规范与最佳实践,激发社区代码审查与优化活力,特举办"质量加固"有奖活动。通过设定明确的代码检查规则,鼓励开发者主动发现并修复社区仓库中不符合编码规范的代码等问题,帮助开发者提升C++编码素养,推动CANN开源项目代码质量持续提升。

二、活动规则

2.1 参与要求与提交规范

编码规范类检查细则

规则编号 规则名称 规则说明
规则1 成员函数const修饰 不会修改成员变量的成员函数应使用const修饰
规则2 参数const修饰 指针和引用类型的参数,如不需修改其引用对象,应使用const修饰
规则3 不可变数据声明 constexpr或const说明符应用于不可变数据声明
规则4 参数名一致性 函数的所有声明必须与定义具有一致的参数名
规则5 无用头文件清理 禁止包含用不到的头文件
规则6 头文件自包含 头文件应该自包含,不需使用者额外引入依赖
规则7 枚举类优先 优先使用枚举类(enum class)而不是普通枚举(enum)
规则8 不可执行代码路径 项目中不应包含不可执行的代码路径
规则9 lambda捕获模式 避免lambda表达式使用默认捕获模式([=]或[&])

日志文档类修正要求

规则编号 规则名称 规则说明
规则1 日志 修正代码日志字符串中的拼写、语法错误,规范日志描述用语
规则2 文档 整改文档文件名及正文里的文字错误,优化文档表述准确性

单元测试补充规范

规则编号 规则名称 规则说明
规则1 单元测试 按函数粒度为缺失用例的代码补充单元测试,要求行覆盖率95% ,补充指导
规则2 单元测试 排查并修正现有失效、逻辑错误的单元测试用例,要求行覆盖率95%
  1. 在graph-autofusion社区仓库中,找到10条及以上符合上述规则或者其他规则的代码问题:
  2. 按照规则完成代码修复
  3. 提交PR,PR标题中标记 【质量加固】 作为前缀

2.2 获奖条件

  1. 该GitCode ID暂未在CANN社区仓合入过PR(面向新贡献者)
  2. 提交的PR符合上述条件并被成功合入

2.3 获奖范围

  • 前10位成功合入PR的GitCode ID
  • 如多个GitCode ID确认为同一人,则不重复获奖
  • 同一个GitCode ID成功合入多个PR,也不重复获奖

2.4 奖品

Huawei手环 11NFC款

三、验收标准

获奖排名:前10位成功合入PR的GitCode ID按合入时间先后排序,依次获得奖品。


附录:代码检查规则详细示例

规则1:成员函数const修饰

错误示例:

class Foo {
public:
    void PrintValue()
    {
        std::cout << value;
    }
    int GetValue()
    {
        return value;
    }
private:
    int value;
};

正确修复示例:

class Foo {
public:
    void PrintValue() const
    {
        std::cout << value;
    }
    int GetValue() const
    {
        return value;
    }
private:
    int value;
};

规则2:指针/引用参数const修饰

错误示例:

void Log(int32_t &val)
{
    std::cout << "val = " << val << std::endl;
}

void myfunc(int16_t *param1, const int16_t *param2,
            int16_t *param3, int16_t *const param4)
{
    *param1 = *param2 + *param3 + *param4;
}

正确修复示例:

void Log(const int32_t &val)
{
    std::cout << "val = " << val << std::endl;
}

void myfunc(int16_t *param1, const int16_t *param2,
            const int16_t *param3, const int16_t *const param4)
{
    *param1 = *param2 + *param3 + *param4;
}

规则3:constexpr/const不可变数据声明

错误示例:

void Fn()
{
    std::int16_t x3 = 5; // x3未被修改,但未声明为常量
}

正确修复示例:

void Fn()
{
    const std::int16_t x1 = 5;
    constexpr std::int16_t x2 = 5;
}

规则4:函数声明与定义参数名一致性

错误示例:

// Fun.h
void Fun1(int);
void Fun2(int count, int num);
// Fun.c
void Fun1(int num) { ... }
void Fun2(int num, int count) { ... }

正确修复示例:

// Fun.h
void Fun1(int num);
void Fun2(int num, int count);
// Fun.c
void Fun1(int num) { ... }
void Fun2(int num, int count) { ... }

规则5:禁止包含无用头文件

错误示例:

#include "func.h"
int Foo(int a, int b)
{
    return a + b;
}

正确修复示例:

int Foo(int a, int b)
{
    return a + b;
}

规则6:头文件自包含

错误示例:

#ifndef DEBUG_FUNC_H
#define DEBUG_FUNC_H
#define DEBUG_FUNC_START printf("FUNC:[%s] start\n", __func__)
#endif

正确修复示例:

#ifndef DEBUG_FUNC_H
#define DEBUG_FUNC_H
#include <stdio.h>
#define DEBUG_FUNC_START printf("FUNC:[%s] start\n", __func__)
#endif

规则7:优先使用枚举类

错误示例:

enum State { DEFAULT, RUNNING, STOP };
constexpr int DEFAULT = 1; // 编译错误:重复声明

正确修复示例:

enum class State { DEFAULT, RUNNING, STOP };
constexpr int DEFAULT = 1;

规则8:不可执行代码路径

错误示例:

void infeas(uint8_t para, uint8_t outp)
{
    if (para >= 0U) {
        outp = 1U;
    }
}

正确修复示例:

void infeas(uint8_t para, uint8_t outp)
{
    if (outp == 1U) {
        outp = 0U;
    }
}

规则9:lambda避免默认捕获模式

错误示例:

auto lambda = [=]() { data += value; };       // 默认按值捕获
auto lambda = [&]() { std::cout << *p << endl; }; // 默认按引用捕获

正确修复示例:

auto lambda = [value, this]() { data += value; };
auto lambda = [value = *p]() { std::cout << value << endl; };

备注:
1.昇腾NPU环境申请&开发IDE配置指南
2.代码提交流程
3.有任何问题都可以联系小助手或在社区讨论群中咨询

小助手(微信号:AutoFusion_Help) 社区讨论群(有效期2026/8/27)
AutoFuse 小助手 AutoFuse 微信讨论群
likedislike
Wwangmingming成员
8 天前 修改了issue 的描述
Wwangmingming成员
8 天前 修改了issue 的描述
Wwangmingming成员
8 天前 修改了issue 的描述
Wwangmingming成员
8 天前 修改了issue 的描述
Wwangmingming成员
8 天前 修改了issue 的描述
此处折叠了43条消息 查看更多
Wwangmingming成员
1 天前 关联了pull request:【PR】: 质量加固修改:const修饰/const参数/const数据
Wwangmingming成员
1 天前 删除了关联的pull request:【PR】: 质量加固修改:const修饰/const参数/const数据
Wwangmingming成员
1 天前 修改了issue 的描述
Wwangmingming成员
1 天前 修改了issue 的描述
gcw_fHR9mxR5gcw_fHR9mxR5
12 小时前 关联了pull request:【质量加固】style: 补充 const 限定符与显式 lambda 捕获