Skip to content

fix(cpu-header): use CPU(s) label for core count and refresh translat…#671

Merged
deepin-bot[bot] merged 1 commit into
linuxdeepin:develop/eaglefrom
GongHeng2017:202605282036-dev-eagle-fix
May 29, 2026
Merged

fix(cpu-header): use CPU(s) label for core count and refresh translat…#671
deepin-bot[bot] merged 1 commit into
linuxdeepin:develop/eaglefrom
GongHeng2017:202605282036-dev-eagle-fix

Conversation

@GongHeng2017
Copy link
Copy Markdown
Contributor

…ions

changed CPU header label from Core(s) to CPU(s) in DeviceGenerator.cpp updated core count to use logicalNum
regenerated translation source files in translations

Log: fix issue
Bug: https://pms.uniontech.com/bug-view-363563.html

…ions

changed CPU header label from Core(s) to CPU(s) in DeviceGenerator.cpp
updated core count to use logicalNum
regenerated translation source files in translations

Log: fix issue
Bug: https://pms.uniontech.com/bug-view-363563.html
Copy link
Copy Markdown

@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 @GongHeng2017, your pull request is larger than the review limit of 150000 diff characters

@deepin-ci-robot
Copy link
Copy Markdown

deepin pr auto review

你好!我是CodeGeeX。我已经对你提供的 git diff 进行了仔细的审查。本次代码变更主要涉及两部分:一是修改了CPU信息展示的逻辑和UI字段名,二是更新了多语言的翻译文件(.ts)。

以下是我对本次代码变更在语法逻辑、代码质量、代码性能和代码安全方面的审查意见和改进建议:

1. 语法与逻辑

核心逻辑变更分析:
DeviceGenerator.cpp 中,原代码为:

QPair<QString, QString> coreCount(tr("Core(s)"), QString::number(coreNum));

修改为:

QPair<QString, QString> coreCount(tr("CPU(s)"), QString::number(logicalNum));

同时,紧随其后的代码是:

QPair<QString, QString> threadPerCore(tr("Thread(s)"), QString::number(logicalNum / coreNum));
  • 逻辑一致性(重要): 修改后,标签变成了 CPU(s),但变量名依然是 coreCount。这在逻辑上产生了矛盾:CPU(s) 通常代表逻辑处理器数量(即 logicalNum),而 coreCount 语义上代表物理核心数。如果这里展示的是逻辑处理器数,变量名应当同步修改,例如改为 logicalCpuCountcpuCount,以免给后续维护者造成困惑。
  • 除零风险(严重): 计算 logicalNum / coreNum 时,虽然外层有 if (coreNum > 0) 的保护,但如果 coreNum 为 0,程序根本不会进入该分支,因此不会发生除零崩溃。不过,如果 logicalNum 不能被 coreNum 整除(虽然在标准x86/ARM架构下不太可能),QString::number 会输出浮点数(如 1.5),这在UI上展示“每核线程数”可能不太美观。建议确认是否需要整型除法或做特殊处理。

2. 代码质量

  • 变量命名: 如上所述,coreCount 变量名需要随业务逻辑更新而更新,以保持代码的自解释性。
  • 翻译文件维护:
    • deepin-devicemanager.ts 中,<source>CPU(s)</source> 的翻译被标记为 <translation type="unfinished"></translation>。在合并代码前,请务必确保完成该翻译的提取和校对,否则在未提供翻译的语言环境下,界面可能会显示空白或直接显示英文源文。
    • 在藏语(_bo.ts)和维吾尔语(_ug.ts)等翻译文件中,直接将 <source>Core(s)</source> 的旧翻译(如藏语的 "རིག་རྟགས་འཕྲུལ་འཁོར།")平移给了 <source>CPU(s)</source>。由于 "Core" 和 "CPU" 在语义上存在差异(物理核心 vs 逻辑处理器),直接复用旧翻译可能导致语义不准确,建议交由专业翻译人员重新校对。

3. 代码性能

  • 翻译文件加载: .ts 文件的行号更新(如 line="964" 变为 line="967")是由于源代码增删行引起的。这本身对运行时性能没有影响,因为 Qt 在编译时会将 .ts 编译为二进制的 .qm 文件,行号信息不会带入运行时。
  • 运行时计算: QString::number(logicalNum)QString::number(logicalNum / coreNum) 都是轻量级计算,对性能毫无影响。

4. 代码安全

  • 整数溢出: logicalNumcoreNum 一般为普通整型。在极端情况下(虽然现实中的CPU暂时还没这么多核心),如果数值极大,除法运算不会溢出,但需留意数据来源的合法性。
  • 信息展示安全: 无安全风险。展示CPU核心数和线程数属于系统硬件信息的常规读取,不涉及敏感数据泄露。

改进建议代码

针对上述逻辑和代码质量问题,建议对 DeviceGenerator.cpp 作如下修改:

// 修改前:
if (coreNum > 0) {
    QPair<QString, QString> coreCount(tr("CPU(s)"), QString::number(logicalNum));
    singleCpuHeaderInfo.push_back(coreCount);
    QPair<QString, QString> threadPerCore(tr("Thread(s)"), QString::number(logicalNum / coreNum));
    singleCpuHeaderInfo.push_back(threadPerCore);
}

// 修改后:
if (coreNum > 0) {
    // 1. 变量名修改为 logicalCpuCount,与 tr("CPU(s)") 语义保持一致
    QPair<QString, QString> logicalCpuCount(tr("CPU(s)"), QString::number(logicalNum));
    singleCpuHeaderInfo.push_back(logicalCpuCount);
    
    // 2. 确保整型除法,并明确语义(每核线程数)
    // 在标准架构下,logicalNum 必然是 coreNum 的整数倍,这里使用整数除法是安全的
    int threadsPerCore = logicalNum / coreNum;
    QPair<QString, QString> threadPerCore(tr("Thread(s)"), QString::number(threadsPerCore));
    singleCpuHeaderInfo.push_back(threadPerCore);
}

总结:
本次修改的业务逻辑是合理的(将概览信息从“物理核心数”改为“逻辑处理器数”,与 lscpu 等标准Linux工具的展示对齐),但需注意变量名同步更新以及多语言翻译的校对(特别是 type="unfinished" 的部分和直接复用旧翻译的少数民族语言文件)。

@deepin-ci-robot
Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: GongHeng2017, max-lvs

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

@GongHeng2017
Copy link
Copy Markdown
Contributor Author

/forcemerge

@deepin-bot
Copy link
Copy Markdown
Contributor

deepin-bot Bot commented May 29, 2026

This pr force merged! (status: unstable)

@deepin-bot deepin-bot Bot merged commit fd2cca1 into linuxdeepin:develop/eagle May 29, 2026
22 of 23 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