Docker Code Analysis工具(CAT)是一种Sonarqube Docker映像,其中包含自定义配置和插件,以实现代码分析。
Sonarqube是管理代码质量的开放平台。
该项目是免费软件;您可以根据自由软件基金会发布的GNU通用公共许可证的条款对其进行重新分配和/或修改它;许可证的版本3,或(您可以选择)任何以后的版本。
您可以在Github上获得Sonarqube:Sonarsource/Sonarqube。
查找组ID,以允许Sonarqube分析(用于Sonar CNES扫描插件):
getent group <group_name> | cut -d : -f3从已知的组名称到达组ID;cat /etc/group列出所有组ID。 ❗该组应对所有项目进行read和execution权限,以分析(浏览和分析所有文件),并在工作空间的根部(执行C/C ++工具和Sonar-Scanner)上write权限。
查找您要在Dockerhub上使用的版本:https://hub.docker.com/r/lequal/docker-cat,或简单地使用与该项目的主分支相对应的latest图像。
运行Docker Cat容器:
docker pull lequal/docker-cat
docker run --rm --name=cat -v < your_folder > :/media/sf_Shared:rw -p 9000:9000 -e ALLOWED_GROUPS= " <GID_1>;<GID_2>;<GID_...> " lequal/docker-cat: < version > ❗此示例使用--rm选项,因此当容器停止并使用其所有数据销毁时。
❗避免使用0作为GUID(例如: -e ALLOWED_GROUPS=0 ):它可能会引起与容器的根用户的冲突。
您可以使用默认的声纳克证书登录Docker Cat的Sonarqube作为管理员。由于它没有安全(每个人都知道!),请确保在安全环境中运行Docker Cat或更改默认凭据。
adminadmin作为管理员,您可以更改所需的任何配置作为默认值,激活的规则或质量门条件...
默认情况下,Docker Cat使用已集成到Sonarqube的嵌入式H2数据库:不应用于长期使用。这就是为什么如果您希望将数据保留一段时间,则应考虑建立一个更强的数据库,如官方文档中所述。
容器处于活动状态后,您可以使用Sonar CNES扫描插件提供的Web界面直接通过Web浏览器运行分析。 #todo
<your_folder>中移动您的代码为了通过所有包含工具到达,您的源代码必须放置在先前安装的Docker卷中,而将其GUID授予
-e ALLOWED_GROUPS=...参数应在整个目录上具有权限。
❗如果您遇到了一些困难,则在已安装卷中的文件上(由于您的系统配置)遇到了一些困难,则可以将代码直接复制到容器中。通过删除任何-v或--volume选项来执行docker run命令,并通过使用此命令docker cp <my_directory> cat:/media/sf_Shared /media/sf_Shared媒体/sf_shared中复制您的目录。
只需打开您喜欢的Web浏览器,并通过键入Docker Cat IP/URL访问Sonarqube界面
:然后将其映射到容器的端口9000。如果您使用默认的先前建议的命令在工作站上启动Docker Cat,则应在地址栏中具有类型http://localhost:9000。
Sonarqube加载后,单击黑色上部工具栏中的
More,然后选择CNES Analysis。分析表格应出现一个新页面。

通过注意以下方式填写表格:
- 带有红色星号的字段:它们是强制性的
Workspace字段:默认情况下,请点数.在这个领域。如果要限制分析范围,请键入/mnt/sf_Shared目录的相对路径。Workspace字段:默认情况下,请点数.在这个领域。如果要限制被视为源文件的文件/路径(通过反对测试文件),请键入从Workspace目录开始的相对路径的coma分隔列表。Run C/C++ tools:如果要运行嵌入式工具(Cppcheck,Vera ++和大鼠),请打开THS按钮。如果您分析C或C ++代码,并且您已经具有CPPCHECK,VERA ++或大鼠会导致工作目录,则可以使用sonar-project.properties字段来指定这些结果的位置并关闭分析。有关更多信息,请参阅Sonar-CXX文档。sonar-project.properties字段:使用此字段添加更多高级配置。请参阅官方文件。

只需单击页面底部的
Analyze按钮即可运行分析。成功运行时,档案下载应在您的Web浏览器中开始。它包含您分析的所有结果。如果您已经在CAT实例中进行了分析,则可以通过使用More>CNES Report中的表格重新分析报告,而无需重新分析报告。
您可以使用Sonarsource提供的一种扫描仪,使用经典方法进行分析。您只需提供启动Docker Cat的URL或IP ,以及您在Docker命令中提供的匹配端口的端口9000即可。有关更多信息,请使用正式文档中所述的Sonarsource的扫描仪。
❗使用这些方法,如果无法正确设置,则可以自动推出的工具(例如cppcheck可能不起作用。
此表列表操作系统已测试了哪个Docker Cat(标记为✔️)或不支持(标记为✔)或根本不支持(标记为)。
| Docker Cat版本 | Linux(Centos&Debian) | Mac OS | 视窗 |
|---|---|---|---|
3.2.2 | ✔️ | ❓ | ❓ |
3.0.0 | ✔️ | ❓ | ❓ |
2.1.0 | ✔️ | ❓ | ❓ |
2.0.2 | ✔️ | ❓ | ❓ |
2.0.1 | ✔️ | ❓ | ❓ |
< 2.0.0 | ✔️ | ❓ | ✔️ |
新的和更新的软件用表情符号标记?
| 工具 | 版本 |
|---|---|
| ? Sonarqube-catlab | 3.2.2 |
| ?声纳扫描仪 | 5.0.1.3006 |
| ? CPPCHECK | 2.13.0 |
| ? I代码CNE | 4.1.2 |
| ? python3 | 3.10.4 |
| ? pip | 22.0.2 |
| ? setuptools-scm | 8.0.4 |
| ? Pytest-Runner | 6.0.1 |
| ?缠绕 | 1.16.0 |
| 六 | 1.16.0 |
| ?懒惰的人 | 1.10.0 |
| 麦凯布 | 0.7.0 |
| ? Isort | 5.13.2 |
| ?打字 | 1.5.5 |
| 星体 | 2.15.2 |
| 皮层 | 2.17.2 |
| CNES-PYLINT-EXTENSION | 6.0.0 |
| 制作 | 4.3 |
| 海湾合作委员会 | 4:11.2.0 |
| 壳牌 | 0.8.0 |
如果您在插件上遇到问题,请打开问题。在本期内,请向我们解释如何重现此问题并粘贴日志。
如果您想进行PR,请将其放入此拉请请求的原因。如果此拉请请求解决问题,请插入问题的数量或在PR内部解释如何重现此问题。
所有详细信息都可以提供。
错误和功能请求:https://github.com/cnescatlab/docker-cat/issues
根据GNU通用公共许可证获得许可,版本3.0