Pull Request已成功合入, 合并人@openharmony_ci
(感谢 cameng 的贡献)感谢提交 Pull Requests!如果您提交的PR已经开发完毕,请评论 "start build" 触发门禁,更多交互操作,请访问OpenHarmony社区支持命令清单。如果需要调整订阅PR、Issue的变更状态,请访问订阅链接。
Thanks for submitting the pull request. If your Pull Request has already been developed, you can leave a "start build" comment to trigger the gated system. For more commands, please visit OpenHarmony Command List. If you need to change the subscription of a Pull Request or Issue, please visit the link.


PR 审查报告:#5567 - wifi2wifi while roaming
仓库:OpenHarmony/communication_wifi
PR 地址:https://gitcode.com/openharmony/communication_wifi/merge_requests/5567
作者:cameng
目标分支:master
PR SHA:649001cd35dd32837c9910c78aa73518905b486a
状态:open
标签:waiting_on_author、dco检查成功
CI 状态:
- ✅ DCO 检查成功
- ✅ 冲突检查通过
- ⚠️ 未见编译/静态检查结果标签(核心问题可能导致编译失败)
变更概要
本 PR 在 wifi2wifi 切换条件中增加"增强漫游进行中"检查(3 个文件,+15/-0),为 #5566 的修订版(移除了空行噪音、测试改为新增断言行而非替换):
ienhance_service.h(+7):IEnhanceService新增纯虚方法:
/**
* @Description query whether enhanced roaming in-progress
*
* @return true if enhanced roaming in progress, else false
*/
virtual void IsEnhancedRoamingInProgress() = 0;
wifi_pro_state_machine.cpp(+6):IsSatisfiedWifi2WifiCondition漫游中返回 false:
IEnhanceService *pEnhanceService = WifiServiceManager::GetInstance().GetEnhanceServiceInst();
if (pEnhanceService != nullptr && pEnhanceService->IsEnhancedRoamingInProgress()) {
WIFI_LOGI("IsSatisfiedWifi2WifiCondition: roaming in progress");
return false;
}
wifi_pro_state_machine_test.cpp(+2):测试新增一行断言。
问题详情
🚨严重
1. 接口声明为 void,却被作为条件表达式使用 → 编译失败(#5566 核心问题未修复)
位置:wifi/base/inner_api/ienhance_service.h / wifi_pro_state_machine.cpp
描述:
// ienhance_service.h
virtual void IsEnhancedRoamingInProgress() = 0; // ← 仍为 void
// wifi_pro_state_machine.cpp
if (pEnhanceService != nullptr && pEnhanceService->IsEnhancedRoamingInProgress()) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// void 不能作为 && 操作数 → 编译错误
接口注释明确写 @return true if enhanced roaming in progress, else false,但声明返回 void,与 #5566 相同。void 表达式无法用于 if 条件 → 必然编译失败。
影响:整个 wifi_manage 模块无法编译。
修复建议:返回类型改为 bool:
/**
* @Description query whether enhanced roaming in-progress
*
* @return true if enhanced roaming in progress, else false
*/
virtual bool IsEnhancedRoamingInProgress() = 0;
2. 新增纯虚方法仍无任何实现(#5566 核心问题未修复)
位置:wifi/base/inner_api/ienhance_service.h
描述:IEnhanceService 新增 = 0 纯虚方法,但本 PR 3 个文件中不包含任何实现(EnhanceServiceImpl 与测试 Mock 均未更新)。实现类将因未实现该方法而变为抽象类,实例化处编译失败。
影响:即使修复问题 1,仍会编译失败;若实现位于其他仓库/PR,需说明依赖顺序。
修复建议:在本 PR 中补齐实现并同步 Mock:
// wifi_enhance_service.cpp(示例)
bool EnhanceServiceImpl::IsEnhancedRoamingInProgress()
{
return roamingInProgress_;
}
⚠️主要
3. 新增测试断言仍为恒真断言,未覆盖新逻辑
位置:wifi/test/wifi_standard/wifi_framework/wifi_manage/wifi_pro/wifi_pro_state_machine_test.cpp
描述:
HWTEST_F(WifiProStateMachineTest, IsSatisfiedWifi2WifiConditionTest01, TestSize.Level1)
{
pWifiProStateMachine_->isWifi2WifiSwitching_ = false;
+ pWifiProStateMachine_->isDisableWifiAutoSwitch_ = false;
pWifiProStateMachine_->IsSatisfiedWifi2WifiCondition();
EXPECT_EQ(pWifiProStateMachine_->isWifi2WifiSwitching_, false);
+ EXPECT_EQ(pWifiProStateMachine_->isDisableWifiAutoSwitch_, false);
}
较 #5566 的改进:保留了原断言(isWifi2WifiSwitching_)。但新增断言仍为恒真(刚设置为 false 又断言 false),无验证价值;且:
- 未 mock 增强服务(调用真实
GetEnhanceServiceInst()); - 未覆盖新增逻辑分支(漫游中 → 返回 false);
- 未断言函数返回值(
IsSatisfiedWifi2WifiCondition返回 bool,测试忽略)。
影响:新增功能无有效测试覆盖。
修复建议:
HWTEST_F(WifiProStateMachineTest, IsSatisfiedWifi2WifiConditionTest01, TestSize.Level1)
{
pWifiProStateMachine_->isWifi2WifiSwitching_ = false;
// 增强服务为空(默认测试环境)时不影响 wifi2wifi 判定
EXPECT_TRUE(pWifiProStateMachine_->IsSatisfiedWifi2WifiCondition());
}
并补充:mock 增强服务返回"漫游中"时,IsSatisfiedWifi2WifiCondition 返回 false 的用例。
💡建议
4. PR 描述信息量不足
"wifi2wifi switch while roaming in-progress" 仅一句话,未说明:增强漫游中发起 wifi2wifi 的具体冲突现象、漫游状态来源(增强服务侧实现)、判断的时效性(漫游结束后的状态清除)。
总体评分
| 维度 | 评分 | 说明 |
|---|---|---|
| 功能正确性 | 3/10 | void 作条件编译失败、纯虚无实现 |
| 代码质量 | 4/10 | 注释与声明矛盾 |
| 安全性 | 7/10 | 无安全影响 |
| 可维护性 | 5/10 | 说明不足 |
| 测试充分性 | 4/10 | 恒真断言、新逻辑无覆盖 |
| 综合评分 | 3/10 |
审查结论
建议操作:🚨 暂不合并
阻塞性问题:
- 问题 1:
IsEnhancedRoamingInProgress返回void却被用作条件表达式 → 编译失败(#5566 已指出,本版未修复); - 问题 2:新增纯虚方法无实现(实现类与测试 Mock 未同步);
- 问题 3:测试新增断言恒真,新逻辑无覆盖。
建议修复:
- 返回类型改
bool,补齐实现与 Mock; - 测试改为有意义的断言并补充漫游中分支覆盖。
优点:
- 业务意图合理(避免漫游与 wifi2wifi 并发冲突)
- 相比 #5566 移除了无关空行变更、保留了原测试断言
- 空指针防护存在
- DCO 检查通过


一、内容说明(相关的Issue)
wifi2wifi switch while roaming in-progress
二、建议测试周期和提测地址
建议测试完成时间:xxxx.xx.xx
投产上线时间:xxxx.xx.xx
提测地址:CI环境/压测环境
测试账号:
三、变更内容
3.1 关联PR列表
3.2 数据库和部署说明
bundle exec xxx RAILS_ENV = production;没有写 "无"3.4 其他技术优化内容(做了什么,变更了什么)
3.5 废弃通知(什么字段、方法弃用?)
3.6 后向不兼容变更(是否有无法向后兼容的变更?)
四、研发自测点(自测哪些?冒烟用例全部自测?)
自测测试结论:
五、测试关注点(需要提醒QA重点关注的、可能会忽略的地方)
检查点:
接口测试:
性能测试:
并发测试:
其他: