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 /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