国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

c++靜態(tài)代碼掃描工具clang-tidy詳細(xì)介紹

這篇具有很好參考價(jià)值的文章主要介紹了c++靜態(tài)代碼掃描工具clang-tidy詳細(xì)介紹。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

clang-tidy

c++靜態(tài)代碼掃描工具clang-tidy詳細(xì)介紹,# C、C++,c++,開發(fā)語言

1. 什么是clang-tidy

Clang-Tidy是一個(gè)由LLVM項(xiàng)目提供的開源工具,是一個(gè)靜態(tài)分析工具,用于進(jìn)行靜態(tài)代碼分析和代碼質(zhì)量改進(jìn)。它利用Clang編譯器的強(qiáng)大功能,對(duì)C++代碼進(jìn)行靜態(tài)分析,并提供了一系列的代碼改進(jìn)建議和警告。Clang-Tidy是基于Clang的AST(抽象語法樹)進(jìn)行分析,并能檢測(cè)出許多常見的編碼錯(cuò)誤和代碼風(fēng)格問題。包括語法錯(cuò)誤、邏輯錯(cuò)誤、性能問題和風(fēng)格問題。

2. clang-tidy可以解決什么問題

clang-tidy可以解決各種類型的代碼問題,包括:

  1. 代碼風(fēng)格問題:例如縮進(jìn)、空格、命名規(guī)范等。
  2. 可維護(hù)性問題:例如不必要的拷貝、錯(cuò)誤的類型轉(zhuǎn)換等。
  3. 潛在的編程錯(cuò)誤:例如空指針引用、數(shù)組越界等。
  4. 性能問題:例如慢速算法、重復(fù)計(jì)算等。

clang-tidy可以幫助開發(fā)人員在編譯時(shí)發(fā)現(xiàn)代碼中的錯(cuò)誤,這可以幫助開發(fā)人員提高代碼質(zhì)量和可靠性。clang-tidy還可以幫助開發(fā)人員提高代碼風(fēng)格,這可以使代碼更易于閱讀和維護(hù)。

3. 工作原理

Clang-tidy的工作原理是將源代碼傳遞給Clang編譯器,然后通過靜態(tài)分析找到代碼中的問題。Clang編譯器是一個(gè)基于LLVM的項(xiàng)目,它提供了了一個(gè)強(qiáng)大的C++前端,能夠解析、編譯和優(yōu)化C++代碼。而Clang-tidy則利用了Clang編譯器的這些功能,對(duì)源代碼進(jìn)行深度分析,并找出其中可能存在的問題。

具體來說,Clang-tidy使用了以下技術(shù):

  1. 靜態(tài)分析:Clang-tidy使用靜態(tài)分析技術(shù)對(duì)源代碼進(jìn)行解析,從而構(gòu)建出抽象語法樹(Abstract Syntax Tree,AST)。通過AST,Clang-tidy能夠深入理解代碼的邏輯,找出其中可能存在的問題。
  2. 規(guī)則引擎:Clang-tidy還使用了一套規(guī)則引擎,用來檢查代碼是否符合特定的規(guī)則。這些規(guī)則可以是檢查潛在的錯(cuò)誤、風(fēng)格問題或性能優(yōu)化點(diǎn)等。
  3. 修復(fù)建議:對(duì)于發(fā)現(xiàn)的問題,Clang-tidy能夠提供一些修復(fù)建議。例如,對(duì)于一個(gè)未初始化的變量,Clang-tidy可以建議將其初始化為零。

4. 如何使用clang-tidy

如何在mac上安裝c lang-tidy

我是直接使用brew install llvm后,將工具直接軟連接到系統(tǒng)路徑下,因?yàn)閙ac本身自帶clang編譯器,如果將llvm放入系統(tǒng)路徑,會(huì)對(duì)mac自身的環(huán)境造成影響。

# 安裝指令:
brew install llvm
ln -s "/usr/local/opt/llvm/bin/clang-format" "/usr/local/bin/clang-format"
ln -s "/usr/local/opt/llvm/bin/clang-tidy" "/usr/local/bin/clang-tidy"
# 檢查安裝情況
(base) ?  bin clang-format --version
clang-format version 16.0.6
(base) ?  bin clang-tidy --version
Homebrew LLVM version 16.0.6
  Optimized build.
 find_program(CLANG_TIDY_BIN clang-tidy)
  find_program(RUN_CLANG_TIDY_BIN /usr/local/Cellar/llvm/10.0.0_3/share/clang/run-clang-tidy.py)
    list(APPEND RUN_CLANG_TIDY_BIN_ARGS
         -clang-tidy-binary ${CLANG_TIDY_BIN}
         -header-filter="\".*\\b(cpp-client/src)\""
         -checks=clan*,cert*,misc*,perf*,cppc*,read*,mode*,-cert-err58-cpp,-misc-noexcept-move-constructor,-cppcoreguidelines-*)

    add_custom_target(tidy
                      COMMAND ${RUN_CLANG_TIDY_BIN} ${RUN_CLANG_TIDY_BIN_ARGS}
                      COMMENT "running clang tidy")

主要有二種使用方式:

  1. 使用命令行

    可以直接使用命令行: clang-tidy -checks=all -p my_project my_file.cpp

    但是一般會(huì)配合githook同步使用, 在用戶add或者commit的時(shí)候,觸發(fā)githook,觸發(fā)腳本,從而掃描用戶修改的文件,達(dá)到代碼靜態(tài)掃描的目的。

  2. 使用cmake

    推薦參考項(xiàng)目: github-cmake-cpp-project-template

# 該命令會(huì)生成
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_program(CLANG_TIDY_BIN NAMES "clang-tidy")
if(CLANG_TIDY_BIN)
  set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_BIN}" "-checks=*")
endif()
  1. 使用腳本

clang-tidy官方腳本

4. 總結(jié)

Clang-tidy是一種強(qiáng)大的源代碼自動(dòng)檢查與修復(fù)工具,它能夠幫助開發(fā)人員發(fā)現(xiàn)并修復(fù)代碼中的各種問題。通過使用Clang-tidy,我們可以提高開發(fā)效率,確保代碼的質(zhì)量和可維護(hù)性。在未來,我們期待看到Clang-tidy在更多領(lǐng)域的應(yīng)用,以及其進(jìn)一步的改進(jìn)和優(yōu)化。

5. 舉例說明:

在沒有任何特定命令行參數(shù)的情況下運(yùn)行該工具將運(yùn)行該實(shí)用程序啟用的默認(rèn)檢查器集。讓我們檢查一下它還提供了哪些其他檢查器(通過傳遞–checks='*'來查看所有檢查器),特別是 grep 查找名稱中帶有現(xiàn)代化的檢查器。這些檢查器提倡使用現(xiàn)代語言結(jié)構(gòu):

$ clang-tidy --list-checks -checks='*' | grep "modernize"
    modernize-avoid-bind
    modernize-deprecated-headers
    modernize-loop-convert
    modernize-make-shared
    modernize-make-unique
    modernize-pass-by-value
    modernize-raw-string-literal
    modernize-redundant-void-arg
    modernize-replace-auto-ptr
    modernize-shrink-to-fit
    modernize-use-auto
    modernize-use-bool-literals
    modernize-use-default
    modernize-use-emplace
    modernize-use-nullptr
    modernize-use-override
    modernize-use-using

選項(xiàng)列表已經(jīng)令人印象深刻,不是嗎?Clang-Tidy 確實(shí)開箱即用地提供了一些有趣的檢查器(從 Clang/LLVM 3.9 開始),并且列表隨著版本的不同而不斷增長(zhǎng)。

檢查器的名稱幾乎是不言自明的(例如,modernize-use-auto將在適用的情況下使用auto),但如果您想探索每個(gè)檢查器的含義,請(qǐng)查閱clang-tidy 主頁(yè)上的檢查器列表:

為了展示該工具的使用方式,讓我們重點(diǎn)關(guān)注現(xiàn)代化使用覆蓋檢查器,因?yàn)樗亲钸m用且最無爭(zhēng)議的檢查器。

% clang-tidy-3.9 -checks='modernize-use-override' test.cpp -- -std=c++11
1 warning generated.
/home/kfunk/test.cpp:5:18: warning: prefer using 'override' or (rarely) 'final' instead of 'virtual' [modernize-use-override]
    virtual void reimplementMe(int a) {}
                 ^
                                      override

好吧。所以它注意到Derived::reimplementMe(int) 重寫了基類方法但缺少override說明符!現(xiàn)在我們可以手動(dòng)添加…或者只是讓該工具通過傳遞*-fix來為我們完成它!在示例上運(yùn)行它(啟用現(xiàn)代化使用覆蓋*檢查器和修復(fù)功能):

有幾件事值得一提:

  • 并非所有clang-tidy 的檢查器實(shí)際上都帶有修復(fù)功能,但以現(xiàn)代化開頭的檢查器都帶有修復(fù)功能。
  • 您可以同時(shí)使用多個(gè)檢查器中的修復(fù)程序(考慮*-checks=‘modernize-use-override,modernize-use-auto’ -fix)*
  • 運(yùn)行 clang-tidy 會(huì)調(diào)用完整的 Clang 編譯器前端,因此需要一些時(shí)間才能完成
  • clang-tidy 的重構(gòu)結(jié)果非常準(zhǔn)確,因?yàn)樗玫搅顺墒斓?C++ 解析器的支持

注意:強(qiáng)烈建議使用run-clang-tidy.py在整個(gè)項(xiàng)目上運(yùn)行 clang-tidy,因?yàn)樗鼘⒉⑿羞\(yùn)行該工具多次并確保并發(fā)執(zhí)行不會(huì)相互干擾(例如通過避免并行修改共享標(biāo)頭并進(jìn)而生成損壞的代碼)。

  • 參考:

clang-tidy 官網(wǎng)文章來源地址http://www.zghlxwxcb.cn/news/detail-617274.html

到了這里,關(guān)于c++靜態(tài)代碼掃描工具clang-tidy詳細(xì)介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • IP掃描工具

    IP掃描工具

    高級(jí) IP 掃描程序是網(wǎng)絡(luò)中必不可少的工具,使管理員能夠跟蹤網(wǎng)絡(luò)地址空間。在提供要掃描的 IP 地址范圍時(shí),高級(jí) IP 掃描程序會(huì)借助網(wǎng)絡(luò)掃描協(xié)議按順序檢查該范圍內(nèi)的每個(gè) IP,掃描后,高級(jí) IP 掃描程序工具可查看網(wǎng)絡(luò) IP 的網(wǎng)絡(luò)方面,例如 IP 保留狀態(tài)、關(guān)聯(lián)的 MAC 地址及

    2024年02月16日
    瀏覽(25)
  • 網(wǎng)絡(luò)安全工具——AWVS漏洞掃描工具

    網(wǎng)絡(luò)安全工具——AWVS漏洞掃描工具

    請(qǐng)勿亂掃目標(biāo),該掃描工具在沒有授權(quán)的情況下使用是違法的 僅個(gè)人使用,不用于商業(yè)用途,使用的是15.2版本的破解版 1.下載Acunetix破解版安裝包,解壓安裝包 2.雙擊允許acunetix_15.2.221208162.exe 3.雙擊安裝包出現(xiàn)下面界面,安裝路徑可以修改 4.點(diǎn)擊下一步填寫郵箱、密碼。設(shè)置

    2024年02月13日
    瀏覽(25)
  • Nmap掃描工具的使用

    Nmap掃描工具的使用

    本實(shí)驗(yàn)可以在虛擬機(jī)中搭建windows系列系統(tǒng)進(jìn)行操作,建議選擇老舊的windows xp,windows 7,windows sever2012等系統(tǒng),這樣可以掃描出很多的漏洞,也方便后面做入侵實(shí)驗(yàn)。攻擊機(jī)可以使用kali linux,被攻擊機(jī)還有肉雞使用windows系列系統(tǒng)比較好。 主機(jī)探測(cè):Nmap可査找目標(biāo)網(wǎng)絡(luò)中的在

    2024年02月13日
    瀏覽(27)
  • Nmap開源網(wǎng)絡(luò)掃描工具

    Nmap的官方網(wǎng)站是https://nmap.org/。 在該網(wǎng)站上,您可以找到有關(guān)Nmap的詳細(xì)信息,包括下載最新版本的Nmap軟件、文檔、教程和其他資源。 更多信息也可以咨詢GPT ^^ Nmap是一個(gè)開源的網(wǎng)絡(luò)掃描工具,它用于探測(cè)和分析網(wǎng)絡(luò)上的主機(jī)和服務(wù)。它可以幫助管理員識(shí)別網(wǎng)絡(luò)上的漏洞和安

    2024年02月16日
    瀏覽(24)
  • 常用Web安全掃描工具合集

    常用Web安全掃描工具合集

    ? 漏洞掃描是一種安全檢測(cè)行為,更是一類重要的網(wǎng)絡(luò)安全技術(shù),它能夠有效提高網(wǎng)絡(luò)的安全性,而且漏洞掃描屬于主動(dòng)的防范措施,可以很好地避免黑客攻擊行為,做到防患于未然。那么好用的漏洞掃描工具有哪些? 答案就在本文! 1、AWVS Acunetix Web Vulnerability Scanner(簡(jiǎn)稱

    2024年04月13日
    瀏覽(25)
  • 網(wǎng)絡(luò)安全:namp掃描工具

    網(wǎng)絡(luò)安全:namp掃描工具

    ??-sP可以掃描一個(gè)網(wǎng)段ip以及狀態(tài)和基本信息,10.1.1.2-3就是掃描2和3這兩個(gè)ip的主機(jī) -p可以掃描指定ip對(duì)應(yīng)主機(jī)的端口號(hào),可以是一個(gè)范圍 nmap簡(jiǎn)單掃描:nmap 地址 檢查地址是否在線以及open的端口號(hào) 在端口開放,不一定可以與對(duì)方正常連接或通信。-sT就可以檢測(cè)是否可以連接

    2024年02月02日
    瀏覽(21)
  • 域名掃描工具subDomainBrute源碼分析

    ? SubDomainsBrute是一款目標(biāo)域名收集工具 ,用小字典遞歸地發(fā)現(xiàn)三級(jí)域名、四級(jí)域名、五級(jí)域名等不容易被探測(cè)到的域名。字典較為全面,小字典就包括3萬多條,大字典多達(dá)8萬條。默認(rèn)使用114DNS、百度DNS、阿里DNS這幾個(gè)快速又可靠的公共DNS進(jìn)行查詢,可隨時(shí)修改配置文件添加

    2024年02月09日
    瀏覽(24)
  • 基于python開發(fā)端口掃描工具

    基于python開發(fā)端口掃描工具

    本人仍然還在學(xué)習(xí)階段,有問題歡迎大佬指正,希望我的文章能夠幫助到你.以后我很多東西都會(huì)在博客更新,和大家一起進(jìn)步,加油. 本次博客主要是開發(fā)一個(gè)端口掃描工具,用python語言,要求要能指定ip,指定c段,指定端口號(hào)和端口范圍,還有多線程或者線程池實(shí)現(xiàn),提高端口掃描效率

    2024年02月04日
    瀏覽(34)
  • Nuclei漏洞掃描工具

    Nuclei漏洞掃描工具

    Nuclei漏洞掃描工具: ???????? Nuclei 是一款基于YAML語法模板的開發(fā)的定制化快速漏洞掃描器。它使用Go語言開發(fā),具有很強(qiáng)的可配置性、可擴(kuò)展性和易用性。?提供?TCP、DNS、HTTP、FILE?等各類協(xié)議的掃描,通過強(qiáng)大且靈活的模板,可以使用?Nuclei?模擬各種安全檢查。 Nucl

    2024年02月15日
    瀏覽(23)
  • 御劍高速TCP端口掃描工具

    御劍高速TCP端口掃描工具

    鑒于CSDN平臺(tái)想恰錢想瘋了,連下載個(gè)軟件也要付費(fèi)/VIP? 那我在這里就無私貢獻(xiàn)出珍藏的——御劍高速TCP端口掃描工具 網(wǎng)址:百度網(wǎng)盤 請(qǐng)輸入提取碼 提取碼:7fk6 ?

    2024年02月13日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包