fix(cpu): Fix CPU vendor info from dmidecode#646
Conversation
Add dmidecode manufacturer info to CPU vendor_id field. 从 dmidecode 获取厂商信息并设置到 CPU vendor_id 字段。 Log: 修复 CPU 厂商信息获取 PMS: BUG-357919 Influence: 修复后 CPU 厂商信息将正确显示,提升设备信息准确性。
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: add-uos 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 |
|
Warning
详情 {
"dmidecode": {
"deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp": [
" if (dmidecode.contains(\"Manufacturer\")) {",
" baseCPUInfo[\"vendor_id\"] = dmidecode[\"Manufacturer\"];"
]
}
} |
Reviewer's guide (collapsed on small PRs)Reviewer's GuideAdjusts CPU device generation so that the CPU vendor_id is sourced from dmidecode Manufacturer information when available before computing and setting CPU header info. Sequence diagram for updated CPU device generation using dmidecode manufacturersequenceDiagram
participant DeviceGenerator
participant CpuInfoList as CpuInfoList_lsCpu
participant DmiDecode as DmiDecode_map
participant CpuHeader as CpuHeaderInfo
DeviceGenerator->>CpuInfoList: get first CPU map lsCpu.at(0)
CpuInfoList-->>DeviceGenerator: baseCPUInfo
alt Manufacturer present in dmidecode
DeviceGenerator->>DmiDecode: check key Manufacturer
DmiDecode-->>DeviceGenerator: Manufacturer value
DeviceGenerator->>DeviceGenerator: set baseCPUInfo[vendor_id] = dmidecode[Manufacturer]
else Manufacturer missing
DeviceGenerator->>DeviceGenerator: keep original baseCPUInfo[vendor_id]
end
DeviceGenerator->>CpuHeader: calAndSetCpuHeaderInfo(baseCPUInfo, coreNum, logicalNum)
CpuHeader-->>DeviceGenerator: CPU header info updated
Class diagram for updated DeviceGenerator CPU vendor handlingclassDiagram
class DeviceGenerator {
- QList~QMap_QString_QString~~ lsCpu
- QMap_QString_QString_ dmidecode
- int coreNum
- int logicalNum
+ void generatorCpuDevice()
+ void generatorBiosDevice()
+ void calAndSetCpuHeaderInfo(QMap_QString_QString_ cpuInfo, int coreNum, int logicalNum)
}
class QMap_QString_QString_ {
+ QString operator_brackets(QString key)
+ bool contains(QString key)
}
class QList_QMap_QString_QString__ {
+ int size()
+ QMap_QString_QString_ at(int index)
}
DeviceGenerator o-- QList_QMap_QString_QString__ : uses_lsCpu
DeviceGenerator o-- QMap_QString_QString_ : uses_dmidecode
QList_QMap_QString_QString__ o-- QMap_QString_QString_ : contains
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- When overriding
vendor_idfromdmidecode, consider only doing so ifdmidecode["Manufacturer"]is non-empty to avoid replacing a validlsCpuvendor value with an empty string. - To avoid unnecessary copies, you could pass a const reference to the original
lsCpu.at(0)intocalAndSetCpuHeaderInfoand only clone/mutate a local map whendmidecodeactually provides a manufacturer override.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- When overriding `vendor_id` from `dmidecode`, consider only doing so if `dmidecode["Manufacturer"]` is non-empty to avoid replacing a valid `lsCpu` vendor value with an empty string.
- To avoid unnecessary copies, you could pass a const reference to the original `lsCpu.at(0)` into `calAndSetCpuHeaderInfo` and only clone/mutate a local map when `dmidecode` actually provides a manufacturer override.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
deepin pr auto review这段代码主要对 以下是对该 diff 的详细审查意见,包括语法逻辑、代码质量、代码性能和代码安全方面: 1. 语法逻辑
2. 代码质量
3. 代码性能
4. 代码安全
综合改进建议为了提高代码的健壮性和可维护性,建议对代码进行微调: // 建议在类或头文件中定义常量,避免魔法字符串
// static const QString KEY_MANUFACTURER = "Manufacturer";
// static const QString KEY_VENDOR_ID = "vendor_id";
void DeviceGenerator::generatorCpuDevice()
{
// ... 前面的代码 ...
if (lsCpu.size() > 0) {
// 使用引用避免不必要的拷贝,前提是后续不修改原数据
// 如果 calAndSetCpuHeaderInfo 需要修改 map,则必须保留拷贝
QMap<QString, QString> baseCPUInfo = lsCpu.at(0);
// 检查 dmidecode 中是否有更权威的厂商信息
if (dmidecode.contains("Manufacturer")) {
// 直接赋值,如果 key 已存在则覆盖
baseCPUInfo["vendor_id"] = dmidecode["Manufacturer"];
}
calAndSetCpuHeaderInfo(baseCPUInfo, coreNum, logicalNum);
}
}总结:这段代码修改逻辑清晰,安全性良好,主要改进点在于关注 |
|
/forcemerge |
|
This pr force merged! (status: blocked) |
Add dmidecode manufacturer info to CPU vendor_id field.
从 dmidecode 获取厂商信息并设置到 CPU vendor_id 字段。
Log: 修复 CPU 厂商信息获取
PMS: BUG-357919
Influence: 修复后 CPU 厂商信息将正确显示,提升设备信息准确性。
Summary by Sourcery
Bug Fixes: