Skip to content

feat: add logs with dlogcover.#640

Merged
wjyrich merged 1 commit intolinuxdeepin:masterfrom
wjyrich:fix-log
Aug 28, 2025
Merged

feat: add logs with dlogcover.#640
wjyrich merged 1 commit intolinuxdeepin:masterfrom
wjyrich:fix-log

Conversation

@wjyrich
Copy link
Contributor

@wjyrich wjyrich commented Aug 19, 2025

as title.

Logs:

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @wjyrich, your pull request is too large to review

@wjyrich wjyrich force-pushed the fix-log branch 2 times, most recently from 1c598f6 to bccb43e Compare August 20, 2025 02:38
@wjyrich wjyrich force-pushed the fix-log branch 2 times, most recently from cfd70ee to 62f367f Compare August 20, 2025 08:38
@deepin-bot
Copy link

deepin-bot bot commented Aug 21, 2025

TAG Bot

New tag: 2.0.9
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #643

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: 18202781743, wjyrich

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@deepin-ci-robot
Copy link

deepin pr auto review

代码审查报告

总体评价

这是一个代码质量较高的项目,主要改进点集中在日志记录的规范化和错误处理的完善上。项目整体架构清晰,但可以进一步增强日志系统的使用和错误处理的健壮性。

主要改进建议

1. 日志系统规范化

项目中已经大量使用了 QLoggingCategory,这是一个很好的实践。建议:

  • 统一日志级别的使用:
    • 使用 qCInfo() 记录重要状态变更
    • 使用 qCDebug() 记录调试信息和详细流程
    • 使用 qCWarning() 记录可恢复的错误和警告
    • 使用 qCCritical() 记录严重错误

例如在 debughelper.cpp 中:

qCInfo(logDebugHelper) << "Debug settings loaded - useRegularWindow:" << m_useRegularWindow 
                      << "avoidLaunchApp:" << m_avoidLaunchApp 
                      << "avoidHideWindow:" << m_avoidHideWindow 
                      << "itemBoundingEnabled:" << m_itemBoundingEnabled;

2. 错误处理增强

在多个文件中发现可以改进的错误处理:

在 appinfo.cpp 中:

GDesktopAppInfo * appInfo = g_desktop_app_info_new(desktopId.toStdString().c_str());
if (!appInfo) {
    qCWarning(logGioUtils) << "Failed to create app info for desktopId:" << desktopId;
    return false;
}

建议增加更详细的错误信息:

if (!appInfo) {
    qCWarning(logGioUtils) << "Failed to create app info for desktopId:" << desktopId 
                          << "Error:" << g_strerror(errno);
    return false;
}

3. 性能优化

在 itemarrangementproxymodel.cpp 中:

void ItemArrangementProxyModel::commitDndOperation(const QString &dragId, const QString &dropId, const DndOperation op, int pageHint)
{
    if (dragId == dropId) {
        qCDebug(logModels) << "Drag and drop IDs are the same, returning early";
        return;
    }
    // ... 其他代码
}

建议在早期返回时也记录一些有用的调试信息,比如拖放的具体位置。

4. 代码安全性

在 launcherfoldericonprovider.cpp 中:

QPixmap LauncherFolderIconProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
{
    // ... 代码
    const auto [iconSize, padding] = IconUtils::getFolderPerfectIconCell(preferredSize.width(), iconPerRow);
    // ... 代码
}

建议添加输入验证:

QPixmap LauncherFolderIconProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
{
    if (id.isEmpty()) {
        qCWarning(logQuick) << "Empty icon ID requested";
        return QPixmap();
    }
    // ... 其他代码
}

5. 代码可维护性

在 appitem.cpp 中:

void AppItem::setIconName(const QString &iconName)
{
    const auto& finalName = iconName.isEmpty() ? "application-x-desktop" : name;
    qCDebug(logModels) << "Final icon name:" << finalName;
    setData(finalName, AppItem::IconNameRole);
}

发现一个小错误:使用了未定义的变量 name,应该使用 iconName:

void AppItem::setIconName(const QString &iconName)
{
    const auto& finalName = iconName.isEmpty() ? "application-x-desktop" : iconName;
    qCDebug(logModels) << "Final icon name:" << finalName;
    setData(finalName, AppItem::IconNameRole);
}

6. 测试覆盖

测试文件中已经包含了基本的测试用例,建议增加:

  • 边界条件测试
  • 异常情况测试
  • 性能测试

例如在 searchfilterproxymodeltest.cpp 中:

void TestSearchFilterProxyModel::testSpecialCharacters()
{
    // ... 现有测试代码
}

可以增加对空字符串、特殊字符序列的边界测试。

总结

这个项目的代码质量总体良好,架构清晰,遵循了良好的Qt编程实践。主要改进方向是:

  1. 统一日志系统的使用规范
  2. 增强错误处理的完整性和详细程度
  3. 添加更多的输入验证和边界检查
  4. 完善测试用例,特别是边界条件和异常情况

通过这些改进,可以进一步提高代码的可靠性、可维护性和性能。

@wjyrich wjyrich merged commit 916ba85 into linuxdeepin:master Aug 28, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants