Conversation
Johnson-zs
commented
Apr 22, 2026
- Revert "test: enhance file sorting tests with directories and symlinks"
- Revert "refactor: optimize file sorting implementation"
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: Johnson-zs 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 pr auto reviewGit Diff 代码审查报告总体评估这段代码主要进行了以下修改:
以下是对各个方面的详细审查和改进建议: 1. 语法逻辑分析CMakeLists.txt 中的问题if(DFM_BUILD_WITH_QT6)
target_include_directories(dfm-io-test
PRIVATE
${CMAKE_SOURCE_DIR}/src/dfm-io/dfm-io
)
else()
target_include_directories(dfm-io-test
PRIVATE
${CMAKE_SOURCE_DIR}/src/dfm-io/dfm-io
)
endif()问题:if和else分支完全相同,这是冗余代码。此外,删除了之前包含的 改进建议: # 如果DFM_BUILD_WITH_QT6需要不同的处理,应该明确区分
target_include_directories(dfm-io-test
PRIVATE
${CMAKE_SOURCE_DIR}/src/dfm-io/dfm-io
${CMAKE_SOURCE_DIR}/src/dfm-io/dfm-io/sort # 如果需要sort目录
)denumerator.cpp 中的问题while (1) {
FTSENT *ent = fts_read(d->fts);
// ...
}问题:使用 改进建议: while (true) {
FTSENT *ent = fts_read(d->fts);
// ...
}2. 代码质量分析删除DFileSorter的影响代码中删除了DFileSorter及其相关类,包括:
问题:删除这些功能后,DEnumerator::sortFileInfoList()的实现变得非常简单,只保留了基本的目录/文件分离功能,没有实现真正的排序逻辑。这可能导致功能缺失。 改进建议:
测试代码简化// 之前
int run_tst_DfmIO(int argc, char *argv[])
{
tst_DfmIO tc;
return QTest::qExec(&tc, argc, argv);
}
// 之后
QTEST_MAIN(tst_DfmIO)评价:这是一个好的改进,使用Qt标准的QTEST_MAIN宏简化了测试代码,减少了样板代码。 3. 代码性能分析文件遍历性能while (1) {
FTSENT *ent = fts_read(d->fts);
// ...
d->insertSortFileInfoList(listFile, listDir, ent, d->fts, hideList);
}问题:代码中没有显示insertSortFileInfoList的实现,但如果它只是简单地将文件信息添加到列表中,而没有进行排序,那么性能可能会受到影响,特别是对于大型目录。 改进建议:
4. 代码安全分析内存管理fts_close(d->fts);
d->fts = nullptr;
// Clean up allocated memory
free(dirPath);评价:正确关闭了fts句柄并释放了dirPath,这是好的做法。 潜在的空指针问题if (!d->fts)
d->openDirByfts();
if (!d->fts)
return {};评价:正确检查了fts指针是否为空,并在失败时返回空列表,这是安全的做法。 5. 其他建议测试覆盖率删除了DFileSorter相关的测试,但没有添加新的测试来验证简化后的排序逻辑。建议:
文档更新删除DFileSorter后,应该更新以下内容:
总结这段代码主要进行了测试框架的重构和排序功能的简化。主要问题包括:
建议:
|
|
/forcemerge |
|
This pr force merged! (status: blocked) |