---
title: 普通场景源码扫描
description: "内存一致性功能只支持在鲲鹏平台环境上运行，不支持x86平台。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/development/demo/KunpengDevKitDsug_0017.html
sourcePath: /source/zh/kunpengdevps/development/demo/KunpengDevKitDsug_0017.html
indexId: 54daf1644ad0c54b2cda81fa665cd94b28211d96856c7bdda8e00ffec23c7ba268
---
# 普通场景源码扫描

内存一致性功能只支持在鲲鹏平台环境上运行，不支持x86平台。


本示例指导用户通过扫描源代码，识别其中的内存一致性问题，并根据该工具自动分析出的需修改的代码内容进行修改。

- 源码规模过大可能会导致占用资源过多，建议代码量不超过10万行；每次创建内存一致性检查任务，都需要重新上传源码文件。
- 多条编译命令以“;”隔开。编译命令支持make、cmake、configure、shell命令以及shell脚本，其中使用make命令时不支持make install；构建命令或者构建脚本不能对用户空间（/opt/DevKit/workspace/用户名/）之外的目录和文件进行创建或修改操作。


#### 扫描源代码

1. 从GitHub(https://github.com/kunpengcompute/devkitdemo/tree/main/Porting_advisor/testdemo/weak_consistency/common)或Gitee(https://gitee.com/kunpengcompute/devkitdemo/tree/main/Porting_advisor/testdemo/weak_consistency/common)代码样例common获取待使用的软件源码包。
  下载的源码包为devkitdemo-main.zip，解压后的“./devkitdemo-main/Porting_advisor/testdemo/weak_consistency/common”为内存一致性静态检查的待扫描代码。

2. 生成BC文件。

  a. 执行以下命令，扫描修改后的源码文件，并生成BC文件。
    1 2 cd /home/software/Porting_advisor/testdemo/weak_consistency/common/ devkit advisor bc-gen -o /home/report -c make

    显示信息如下：

```
Executing bc gen task, please wait...
Current progress: ###### [20%]
Start to get the compile database
Current progress: ################ [50%]
Start to generate the BC files
Current progress: ################################# [100%]
Configuration:
Generate BC files path: /home/report
Compile command: make
Threads: The threads is not set, using the half number of cores.
Task Timeout Interval: The timeout period is not set.
Log level: info
Summary:
Scanned all source files, there are 1 linked BC files and 1 object BC files generated.
For the detail information, please check:
Output path of linked BC files: /home/report/bc-gen_20250526023122_8a68/bin
Output path of object BC files: /home/report/bc-gen_20250526023122_8a68/object
There are 0 linked BC files failed to be generated. For the causes of the failure to generate all the BC files and their intermediates, please check:
Log path: /opt/DevKit-CLI-x.x.x-Linux-Kunpeng/advisor/logs/affinity/affinity.log
```


    -o：生成BC文件的存放路径，需要有写权限。报告默认存放在当前路径下，名称默认为“模块名称_时间戳”。 -c：源码的构建命令。 请下载回显信息中“Output path of linked BC files”后面路径下的“bc-gen_20250526023122_8a68”文件夹，将“bin”文件夹作为3中BC文件存放路径。

3. 进入鲲鹏DevKit，在左侧列表中单击“亲和分析 > 内存一致性静态检查”，检查模式选择“静态检查”。
  单击“源码文件存放路径”后“选择文件夹”，上传common文件夹。单击“BC文件存放路径”后“选择文件夹”，上传bin文件夹。如图1所示。

  图1 内存一致性源码文件静态检查界面

4. 单击“开始检查”，执行内存一致性检查任务，并得到扫描分析报告，如图2所示。
  图2 扫描分析报告


#### 源代码内存一致性问题

单击检查报告的“查看建议源码”，查看具体的内存一致性问题所在的源码位置，如图3、图4所示。

图3 源码修改建议

图4 内存一致性问题所在的源码位置

<common.c>扫描出2个内存一致性问题。在thread0中分别对共享变量x、y进行了写操作，在thread1中对共享变量x、y进行了读操作，内存一致性扫描工具识别并报告了此处可能存在内存一致性问题。
