Repository navigation
Conversation
|
Sorry @add-uos, your pull request is larger than the review limit of 150,000 diff characters |
|
Warning
详情 {
"export": {
"deepin-devicemanager-server/tests/run-ut.sh": {
"b": [
"export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-offscreen}",
"export ASAN_OPTIONS=${ASAN_OPTIONS:-detect_leaks=1}",
" export LSAN_OPTIONS=suppressions=\"$SCRIPT_DIR/lsan_suppressions.txt\"",
" export projectdir=\"$PROJECT_ROOT\"",
" export builddir=\"build-${TEST_DIR}\"",
" export reportdir=\"build-${TEST_DIR}\"",
" export GTEST_XML_DIR=\"$GTEST_XML_DIR\"",
" export COVERAGE_INFO=\"$BUILD_DIR/coverage.info\""
]
}
}
} |
|
Warning
详情 {
"export": {
"deepin-devicemanager-server/tests/run-ut.sh": {
"b": [
"export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-offscreen}",
"export ASAN_OPTIONS=${ASAN_OPTIONS:-detect_leaks=1}",
" export LSAN_OPTIONS=suppressions=\"$SCRIPT_DIR/lsan_suppressions.txt\"",
" export projectdir=\"$PROJECT_ROOT\"",
" export builddir=\"build-${TEST_DIR}\"",
" export reportdir=\"build-${TEST_DIR}\"",
" export GTEST_XML_DIR=\"$GTEST_XML_DIR\"",
" export COVERAGE_INFO=\"$BUILD_DIR/coverage.info\""
]
}
}
} |
deepin pr auto review🤖 AI 代码审查报告📊 总体评价
🔍 详细分析1. 语法逻辑 ❌评价: 存在逻辑缺陷 ❌ 不通过 潜在问题: 建议: ['run-ut.sh: 将 -DBUILD_TESTS=ON 改为 -DCMAKE_COVERAGE_ARG="CMAKE_COVERAGE_ARG_ON"', 'run-ut.sh: 将 -name "test_" 改为 -name "test" 或 -name "-test"', 'gen-ut-summary.py: 在 end_of_record 分支中累加后添加 cur_lh = cur_lf = cur_fnf = cur_fnh = 0', 'addr_any.h: 初始化 match = 0,检查 regcomp 返回值,在所有退出路径调用 regfree'] 2. 代码质量 ✅评价: 代码结构清晰,注释完整 ✅ 通过 潜在问题: 建议: ['run-ut.sh: 将 STUB_SRC 改为环境变量 STUB_EXT_SRC 或移除此同步步骤(stub 已随仓库提交)', 'ut_notifythread.cpp: 为 readAll 调用使用独立计数器 g_readAllCalls', '3rdparty stub.h: 将 throw("...") 改为 throw std::runtime_error("...")'] 3. 代码性能 ✅评价: 性能良好,资源使用合理 ✅ 通过 潜在问题: 建议: [] 4. 代码安全 🔒评价: 存在0个安全漏洞 ✅ 通过
安全漏洞详情: 建议: [] 💡 改进建议代码示例# run-ut.sh 修复:CMake 编译标志与二进制名匹配
step_2_configure_cmake() {
print_step 2 "Configuring CMake..."
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
cmake "$PROJECT_ROOT" \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_COVERAGE_ARG="CMAKE_COVERAGE_ARG_ON" \
-DCMAKE_SAFETYTEST_ARG="CMAKE_SAFETYTEST_ARG_ON" \
-DCMAKE_C_FLAGS="--coverage" \
-DCMAKE_CXX_FLAGS="--coverage" \
-DCMAKE_EXE_LINKER_FLAGS="--coverage" \
-DCMAKE_SHARED_LINKER_FLAGS="--coverage"
print_success "CMake configuration completed"
}
discover_test_binaries() {
local found
found=$(find "$BUILD_DIR/$TEST_DIR/src" -maxdepth 1 -type f -executable -name "*test*" 2>/dev/null | sort)
if [ -z "$found" ]; then
found=$(find "$BUILD_DIR" -maxdepth 4 -type f -executable -name "*test*" \
-not -name "*.so" -not -name "*.a" -not -name "*.cmake" 2>/dev/null | sort)
fi
echo "$found"
}
# gen-ut-summary.py 修复:end_of_record 后重置计数器
def _parse_info_pure(coverage_info):
lh = lf = fnf = fnh = 0
cur_lh = cur_lf = cur_fnf = cur_fnh = 0
with open(coverage_info, encoding="utf-8", errors="replace") as fp:
for raw in fp:
line = raw.strip()
if line == "end_of_record":
lh += cur_lh; lf += cur_lf; fnf += cur_fnf; fnh += cur_fnh
cur_lh = cur_lf = cur_fnf = cur_fnh = 0 # FIX: reset counters
elif line.startswith("LH:"):
try: cur_lh = int(line[3:])
except ValueError: pass
elif line.startswith("LF:"):
try: cur_lf = int(line[3:])
except ValueError: pass
elif line.startswith("FNF:"):
try: cur_fnf = int(line[4:])
except ValueError: pass
elif line.startswith("FNH:"):
try: cur_fnh = int(line[4:])
except ValueError: pass
# ... rest unchanged本报告由 AI 代码审查工具自动生成 |
新增 deepin-devicemanager-server DriverControl 模块单元测试: - ut_Utils:40 用例(getUrl/kernelRelease/getOsBuild/getVersion/isFileLocked/ executeServerCmd/file2PackageName/getModuleFilePath/unInstallPackage/ updateModDeps/isDpkgLocked/isDriverPackage/hierarchicalEnabled/addModBlackList, 含跨进程 POSIX 锁探测与 find 兜底分支) - ut_fdutil:19 用例(isValidComponentName/sanitizedFileName/copyFileByFd/ copyDebsFromDirFd/bridgeFdToTempFile/removeBridgedTempFile 等 fdutil 导出 函数,含 fd EOF 重读、fstat 失败、只写 fd、mkpath 失败等错误分支回归) - ut_httpdriverinterface:28 用例(单例生命周期/getRequestBoard(V25+legacy)/ getRequestPrinter/getRequestCamera/getRequestJson/getDriverInfoFromJson/ checkDriverInfo 按设备类型分发,网络层经 stub-ext 全量打桩) - ut_notifythread:3 用例(线程启动/命令执行/异常路径,QThread::sleep 打桩) - 测试基建:3rdparty/stub(stub-ext)、run-ut.sh、gen-ut-summary.py(含无 lcov 回退解析)、lsan_suppressions.txt,tests/CMakeLists.txt 追加 server 测试目标 self-check-structural 全部 0 error;受影响 4 套件 90/90 通过; 全部 21 套件 281 用例、277 通过(4 项失败为基线既有,与本提交无关); 分级覆盖率 high 90.0% / mid 97.6% / low 98.1%,函数覆盖 100%; 外部依赖(QProcess/DBus/网络/文件锁/QThread)全部打桩隔离,不依赖真实设备。 Log: 补充 DriverControl 模块单元测试 Influence: deepin-devicemanager-server-tests
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: add-uos, lzwind The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
概要
为 deepin-devicemanager-server 驱动工具(drivercontrol/securityutils/notifythread/main)补充 Google Test 单元测试,覆盖 Issue 指定的 6 个源文件。
变更内容
tests/src/DriverControl/ut_httpdriverinterface.cpp(25 用例):HTTP 驱动查询、JSON 解析、按设备类型分发、单例生命周期tests/src/DriverControl/ut_notifythread.cpp(4 用例):线程启动/停止ut_Utils.cpp(40 用例):os-build 解析、锁探测(跨进程 POSIX 锁)、驱动包判定等ut_fdutil.cpp(19 用例):fd 复制/桥接错误分支(fstat 失败、只写 fd、mkpath 失败等)tests/gen-ut-summary.py增加无 lcov 环境下的纯 Python .info 解析回退测试结果
Log
UT-devicemanager-26 单元测试补充任务产物
Influence
仅新增/增强测试代码与测试基建,不改动生产逻辑