This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC1354R10:如何在 SonarQube 编译期间编辑/.clangd/compile_commands.json

Guru**** 2609895 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1575104/cc1354r10-how-to-edit-clangd-compile_commands-json-during-compilation-for-sonarqube

器件型号:CC1354R10


工具/软件:

尊敬的 TI 社区:

我尝试使用 CCS_Studio_20.3.0 上的 SonarQube 扩展来增强编码 实践。

我设法在本地启动并运行该脚本;但是、我必须生成一个 python 脚本、以便在 compile_mcommands.json 的命令段中附加工程中每个文件的文件名。

当使用 CCS_Studio 编译工程时、它会 在构建文件夹中生成/.clangd/compile_commands.json。

  下面显示了 compile_commands.json 的示例:

[
 {
  “目录“:“c:/XX/XXXX、
  “命令“:“CLANG++ ....................................................  -xC “、
  “file":“:“c:/XX/XXXX/file.c
 }
]
上面默认生成的文件的问题是它在“command"中“中不包含文件名。
我使用 python 脚本来附加文件名、如下所示:
[
 {
   “目录“: “c:/XX/XXXX、
   “命令“: “CLANG++ ....................................................  -xC:/XX/XXXX/file.c “、
   “file" :“:“c:/XX/XXXX/file.c
 }
]
SonarQube 需要 compile_commands.json 文件中的命令文件名。


有人可能会建议我如何更改 TI-RTOS 中的 CCS_Studio 或 CLANG、以自动将文件名附加到 compile_commands.json 中。
我当前的解决方案是使用 python 脚本并在 CCS_Studio 中的编译后处理步骤中自动调用该脚本;但是、我很好奇是否有更清洁、更高效的方法来实现此目的?


此致
Brenton
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Brenton

    老实说、我不确定是否有更好的解决方法。 显然、这并不理想、因为您不必修改自动生成的文件。

    我会深入研究一下、看看是否有更好的选择。

    谢谢

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请检查、Sonarcube 和 CLANG-TIDY 在作为 CI-Pipeline 的一部分运行时遇到同样的问题。
    根据 https://clang.llvm.org/docs/JSONCompilationDatabase.html 中 compile_command.json 的规范、“command"字“字段应包含未更改的编译命令、包括文件名:

    “命令““/usr/bin/clang ++-ireless -DSOMEDEF=“\"带“带空格、引号和\-es.\“-c -o file.o file.cc“ 

    谨致问候、Matthias
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    遗憾的是、这是一个已知的限制。 我现在还没有好的选择。