成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

靜態(tài)分析器 Clang Static Analyzer (2) CodeChecker

系統(tǒng) OpenHarmony
Clang 靜態(tài)分析器CSA是一個源代碼分析工具,可查找 C、C++ 和 Objective-C 程序的bugs。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區(qū)??

??https://ost.51cto.com??

1、Clang Static Analyzer介紹

Clang 靜態(tài)分析器CSA是一個源代碼分析工具,可查找 C、C++ 和 Objective-C 程序的bugs。
目前可以從命令行中運行,或者如果您使用 macOS,則可以在 Xcode 中使用。當從命令行中運行時,該工具和代碼構建串聯(lián)運行。
該分析器是100%開源的,是Clang項目的一部分。類似Clang的其他工具,它實現為C++庫,可以被其他工具和應用調用。

2、Clang Static Analyzer命令行工具

靜態(tài)分析器在設計上是一個 GUI 工具。其目的是找到程序中的錯誤執(zhí)行路徑,這些路徑很難通過查看非交互式標準輸出進行獲取。但是,可以從命令行調用靜態(tài)分析器來獲取分析結果,稍后在圖形界面中以交互方式查看分析結果。以下兩個工具通常用于從命令行運行分析器,這兩種工具都是封裝的腳本,用于分析結果、調用底層的Clang編譯器:

  • Scan-Build是一個古老而簡單的命令行工具,可在編譯項目時輸出HTML文件。用于查看靜態(tài)分析器警告。您可以在 Web 瀏覽器中查看分析結果。
  • 對于只想在辦公桌上或在非常簡單的協(xié)作環(huán)境中查看靜態(tài)分析結果的個人開發(fā)人員非常有用。
  • 適用于所有主要平臺(Windows,Linux,macOS),并且在許多Linux發(fā)行版中作為軟件包提供。
  • 不包括對交叉翻譯單元分析的支持cross-translation-unit analysis。
  • CodeChecker是一個 Web 服務器,它按需在項目上運行靜態(tài)分析器,并維護問題數據庫。
  • 非常適合在協(xié)作環(huán)境中管理大量靜態(tài)分析器警告。
  • 通常比scan-build功能更豐富。
  • 支持增量分析:結果可以存儲在數據庫中,后續(xù)分析運行可以對比,列出新添加的缺陷。
  • 通過 CodeChecker 在 Linux 上完全支持交叉翻譯單元 (Cross Translation Unit ,CTU) 分析。
  • 也可以運行clang-tidy checker檢查器。
  • 開源,但是開源項目之外,即不是LLVM項目的一部分。

3、CodeChecker工具

CodeChecker 是一個靜態(tài)分析工具,基于LLVM/Clang Static Analyzer工具鏈進行構建的,用來替代scan-build工具,可以用于Linux或macOS開發(fā)環(huán)境上。
CodeChecker工具屬于python的庫文件,維護在pypi上。安裝該工具,使用命令如下:

pip3 install codechecker

還需要安裝下cppcheck等,命令如下:

sudo apt-get install cppcheck

另外,需要使用下述環(huán)境變量,在~/openharmony/prebuilts/clang/ohos/linux-x86_64/llvm/bin目錄下有clang-tidy等命令行工具會使用到。

export PATH=~/openharmony/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PATH
export CC_LOGGER_GCC_LIKE="gcc:g++:clang:clang++:cc:c++"

4、CodeChecker基本用法

繼續(xù)使用之前提供一個簡單的示例文件simple.c,里面包含明顯的錯誤。

#include <stdio.h>

struct S {
int x;
};
void f(struct S s){
}
void test() {
struct S s;
f(s); // warn
}
int test2(int x){
return 5/(x-x); // warn
}
int main(){
test();
test2(532);
printf("Hej\r\r");
}

以及使用到的Makefile:

all: simple.c
gcc -o simple_mk simple.c
clean:
rm -f *.o simple_mk

(1)CodeChecker log生成分析日志

執(zhí)行如下命令,在編譯的時候生成分析日志。

make clean
CodeChecker log -b "make" -o compile_commands.json

執(zhí)行輸出信息如下:

zhushangyuan@DESKTOP-RPE9R4O:~/CSA$ make clean
rm -f *.o simple_mk
zhushangyuan@DESKTOP-RPE9R4O:~/CSA$ CodeChecker log -b "make" -o compile_commands.json
[INFO 2022-12-06 21:11] - Starting build...
[INFO 2022-12-06 21:11] - Using CodeChecker ld-logger.
gcc -o simple_mk simple.c
simple.c: In function ‘test2’:
simple.c:16:11: warning: division by zero [-Wdiv-by-zero]
return 5/(x-x); // warn
~^~~~~~
[INFO 2022-12-06 21:11] - Build finished successfully.

生成的文件內容比較簡單:

[
{
"directory": "/home/zhushangyuan/CSA",
"command": "/usr/bin/gcc -o simple_mk simple.c",
"file": "simple.c"
}
]

(2)CodeChecker analyze分析工程

執(zhí)行如下命令,輸出分析報告。reports文件夾下主要是些plist文件,屬于xml格式的文件,用于記錄編譯錯誤信息。

CodeChecker analyze compile_commands.json -o ./reports

(3)CodeChecker parse查看分析結果

可以使用如下命令,使用純文本方式展示分析出來的缺陷以及統(tǒng)計信息。

CodeChecker parse --print-steps ./reports

上述命令易讀性較差,可以使用下述命令,在瀏覽器里查看。使用瀏覽器Firefox或MS Edge打開./reports_html/index.html即可。

CodeChecker parse ./reports -e html -o ./reports_html
firefox | msedge.exe ./reports_html/index.html

缺陷列表示意圖如下:

#盲盒+碼#  Clang Static Analyzer (2) CodeChecker-開源基礎軟件社區(qū)

分析結果統(tǒng)計信息如下:

#盲盒+碼#  Clang Static Analyzer (2) CodeChecker-開源基礎軟件社區(qū)

缺陷展示頁面如下:

#盲盒+碼#  Clang Static Analyzer (2) CodeChecker-開源基礎軟件社區(qū)

(4)CodeChecker store存儲分析結果

可以使用CodeChecker server命令創(chuàng)建一個Web站點,然后執(zhí)行CodeChecker store命令把分析結果存儲在數據庫。然后通過瀏覽器http://localhost:8555/Default進行網頁訪問,可以在瀏覽器上對分析結果進行管理。

mkdir ./ws
CodeChecker server -w ./ws -v 8555 &
CodeChecker store ./reports --name my-project --url http://localhost:8555/Default

#盲盒+碼#  Clang Static Analyzer (2) CodeChecker-開源基礎軟件社區(qū)

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區(qū)??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 51CTO開源基礎軟件社區(qū)
相關推薦

2022-12-12 16:11:47

Clang-Tidy工具

2022-12-09 15:38:54

Cppcheck靜態(tài)分析工具

2022-12-13 15:42:56

Clang-Tidy靜態(tài)分析工具

2020-02-24 09:25:33

代碼開發(fā)工具

2010-11-09 14:06:47

SQL Server查

2010-01-05 16:55:44

JSON 文本

2011-07-26 10:27:07

分析器操作系統(tǒng)服務器

2009-03-03 09:56:00

協(xié)議分析器WLAN

2017-04-29 10:37:23

2009-05-06 17:31:17

SQL EnlightT-SQL分析器

2010-09-02 09:15:33

協(xié)議分析器Wi-Fi

2017-05-16 13:55:57

2012-05-14 11:52:45

服務器角色

2010-11-09 11:40:14

SQL Server查

2011-09-13 11:26:09

交換機端口分析器SPAN交換機

2010-04-09 18:12:12

Wi-Fi無線協(xié)議分析

2014-09-18 14:56:34

CentOSSARG

2018-01-30 17:35:39

LinuxPythonNmon分析器

2010-08-20 15:07:22

浮動靜態(tài)路由

2022-11-24 13:05:27

ClangiOS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂av免费观看 | 欧美一区二区成人 | 人人干人人干人人 | 天天射美女 | 丝袜天堂| 久久一区精品 | 成人精品鲁一区一区二区 | 黄色片a级 | 欧美成人精品一区二区男人看 | av网站在线免费观看 | 夜久久 | 亚洲福利一区 | 国产一级影片 | 国产一区二区三区四区 | 婷婷综合激情 | 亚洲精品二区 | 波多野吉衣在线播放 | 日韩中文字幕在线播放 | www国产精品| 911网站大全在线观看 | 最新日韩av | 国产 欧美 日韩 一区 | 日韩欧美三级电影在线观看 | 免费视频一区二区三区在线观看 | 欧洲成人免费视频 | 91九色在线观看 | 逼逼网 | 午夜免费精品视频 | 久久国产亚洲 | 羞羞色网站 | 特黄一级 | 精品1区2区| 日本在线黄色 | 久久久久国产精品一区二区 | 一区二区日韩 | 国产黄色精品 | 黄网站免费观看 | 999精品视频在线观看 | 精品综合视频 | 请别相信他免费喜剧电影在线观看 | 久久精品免费观看 |