一文詳細解析Google編碼規范工具cpplint的下載安裝與使用

目錄

一、什么是cpplint

二、cpplint能實現的功能

三、cpplint的下載與使用

1、配置python環境

2、安裝cpplint

四、cpplint常用命令講解

1、常用命令查看

2、常用命令詳解

3、命令使用方式

五、?cpplint的實用技巧

1、集成cpplint

1.1、修改調用接口.

1.2、直接把cpplint集成到IDE工具里

1.2.1、打開VS,選擇工具-外部工具

1.2.2、選擇添加,進行配置?

1.2.3、運行檢測

?2、修改cpplint實現自定義編碼規范


一、什么是cpplint

cpplint是一個用于檢查C++代碼風格的工具,它可以幫助我們自動化地檢查代碼,發現潛在的編碼問題,確保代碼風格的一致性和規范性,提高代碼質量。cpplint遵循Google的C++編碼規范,通過靜態分析代碼來檢查潛在的問題,如命名規范、格式、內存管理等。

二、cpplint能實現的功能

注意cpplint僅僅只是給出基于google的編碼規范建議,需要我們針對建議去一個個修改:

1、檢查代碼縮進是否正確。
2、檢查變量、函數、類命名是否符合規范。
3、檢查代碼注釋是否符合規范。
4、檢查代碼行長度是否符合規范。
5、檢查頭文件包含順序是否正確。????????
6、檢查代碼中潛在的錯誤和不良習慣。

三、cpplint的下載與使用

下載安裝這一塊,我看網上不少教程都是讓去github倉庫下載,但是我嘗試了一下發現可以直接pip下載,會更加簡單快捷。

由于該工具是基于python腳本,所以必須保證先有python環境

1、配置python環境

去官網下載python文件,一定記得勾選自動添加到環境變量中,

https://www.python.org/downloads/windows/

cmd驗證:出現版本號說明環境配置好了,注意是-V(大寫)

python -V

?2、安裝cpplint

此時直接執行命令:pip install cpplint?

執行安裝程序,看到出現Successfully installed cpplint-1.6.1說明安裝成功

安裝成功后就可以開始使用,具體的使用方法:

2.1、在需要檢查的文件夾下cmd打開終端

2、輸入命令:

python xxx\cpplint.py ?需要的命令 ?需要檢測的文件

這里xxx就是cpplint.py的文件路徑,如果覺得麻煩也可以先添加到環境變量里面去

3、此時cpplint就會分析代碼并給出結果

四、cpplint常用命令講解

來看看cpplint.py的常用命令

1、常用命令查看

打開終端執行命令

python xxx\cpplint.py --help

再次提醒這里xxx就是cpplint.py的文件路徑,如果覺得麻煩也可以先添加到環境變量里面去

?2、常用命令詳解

我們先來看幾個常用的:

1、--verbose=#: 這個選項用于設置詳細程度。

對于發現的每個問題,cpplint都會給出一個位于區間[1,5]之間的置信度評分,分數越高就代表問題越肯定,可以通過verbose選項控制輸出哪些級別,置信度評分為1、2的將不會再輸出。通過指定#的值,可以控制輸出的詳細程度

2、--output=emacs|eclipse|vs7|junit|sed|gsed: 該選項用于指定輸出的格式。

可以選擇不同的輸出格式,如emacs、eclipse、vs7、junit、sed或gsed。?默認是emacs,vs7是Visual Studio輸出的兼容格式

3、--filter=-x,+y,...: 用于過濾特定的錯誤或警告。

通過指定-x來排除特定的錯誤或+y來包含特定的警告,-表示不輸出,+表示輸出

4、--counting=total|toplevel|detailed: 該選項用于設置錯誤計數的方式。

可以選擇計算總數、僅計算頂層錯誤或者詳細計數。

示例:

--counting=total

輸出:Total errors found: 121?

命令數不少,就不再一一詳細列舉,大家可自行查閱參考:

序號命令解釋
1--root=subdir:指定根目錄。可以將指定的子目錄作為根目錄進行檢查。
2--repository=path:指定存儲庫路徑。可以指定代碼存儲庫的路徑。
3--linelength=digits:設置每行的字符數限制。通過指定digits的值來設置每行的字符數限制。google cpplint默認是80字符
4--headers=x,y,...:指定頭文件。可以指定要檢查的頭文件。
5--recursive:遞歸檢查子目錄。通過添加此選項,可以遞歸地檢查子目錄中的文件。
6--exclude=path:排除特定路徑。可以指定要排除檢查的特定路徑。
7--extensions=hpp,cpp,...:指定文件擴展名。可以指定要檢查的文件擴展名,如hpp、cpp等。
8--includeorder=default|standardcfirst:指定包含文件的順序。可以選擇默認順序或將標準C頭文件放在首位。
9--quiet:靜默模式。通過添加此選項,可以使輸出更加簡潔,減少冗余信息。????????
10--version:顯示版本信息。通過添加此選項,可以查看cpplint.py的版本信息。

3、命令使用方式

python xxx\cpplint.py ?命令 ?需要檢測的文件?

五、?cpplint的實用技巧

1、集成cpplint

雖然cpplint是谷歌公開 C++編碼規范 號稱是全球最好,但是也僅僅是給出建議,我們需要對應文件去一個個修改,其實還是非常不方便的,針對這個問題常用的兩種解決辦法。

1.1、修改調用接口.

直接把錯誤信息當成注釋一次性放入源文件中,然后打開一次源文件,依次修改即可

參考文章:

c++代碼靜態檢查工具——cpplint使用技巧_cpplint 指出來的問題怎么改-CSDN博客

1.2、直接把cpplint集成到IDE工具里

常見的比如Visual Studio、Visual Studio Code等,我們這里以VS為例,可以實現在VS的輸出窗口輸出編碼建議,點擊對應建議可跳轉到對應代碼位置

1.2.1、打開VS,選擇工具-外部工具

1.2.2、選擇添加,進行配置?

注意這里命令和參數里都需要輸入具體的文件路徑,

參數里選擇output為vs7,默認是emacs,vs7是Visual Studio輸出的兼容格式?

1.2.3、運行檢測

配置完成后,隨便打開某一個cpp文件,點擊工具-cpplint.py,即可運行檢測

此時我們工具里已經多了cpplint.py,對任意一個文件均可使用該工具,點擊對應建議會跳轉到對應代碼處。

2、修改cpplint實現自定義編碼規范?

雖然google的c++編碼規范已經很不錯了,但是肯定不會完全適用,幸好cpplint還支持規則制定

可以通過修改cpplint的配置文件來自定義檢查規則。這樣我們就可以根據團隊或項目的需求,定制適合自己的代碼規范檢查規則。進而定制出一套團隊的編碼規范并長期使用。

當然,這個我還沒試過,大家感興趣可以自己先嘗試嘗試。


綜上,我們就完成了cpplint的下載安裝與使用。

都看到這里了,點個贊再走唄朋友~

加油吧,預祝大家變得更強!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12893.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12893.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構(C):樹的概念和二叉樹初見

目錄 🍺0.前言 1.樹概念及結構 2.認識一棵樹 3.樹的表示 3.1樹在實際中的運用(表示文件系統的目錄樹結構) 4.二叉樹 4.1特殊的二叉樹 4.2二叉樹的性質 💎5.結束語 🍺0.前言 言C之言,聊C之識&…

卷積模型的剪枝、蒸餾---蒸餾篇--NST特征蒸餾(以deeplabv3+為例)

本文使用NST特征蒸餾實現deeplabv3+模型對剪枝后模型的蒸餾過程; 一、NST特征蒸餾簡介 下面是兩張疊加了熱力圖(heat map)的圖片,從圖中很容易看出這兩個神經元具有很強的選擇性:左圖的神經元對猴子的臉部非常敏感,右側的神經元對字符非常敏感。這種激活實際上意味著神經…

程序員績效管理-序言

開辟一個新專欄專門討論程序員績效管理。作為軟件開發企業,公司的命脈掌握在程序員手中。程序員的績效管理是個超級難題。小張和老王專欄介紹了兩個典型的人員。但是這是兩個虛擬的極端人員,大部分開發人員沒有那么容易分辨。1個任務,應該1天…

LabVIEW軟件開發工程師需要具備哪些能力與素質?

成為一名優秀的LabVIEW軟件開發工程師,需要具備以下能力與素質: 技術能力 LabVIEW編程技能: 精通LabVIEW編程,能夠熟練使用其圖形化編程界面。熟悉LabVIEW中的各種功能模塊和工具包,如數據采集(DAQ&#x…

如何配置Nacos的健康檢查參數?

在微服務架構中,服務注冊與發現以及健康檢查是至關重要的組件。Nacos,作為阿里巴巴開源的一個更易于構建云原生應用的動態服務發現、配置和服務管理平臺,廣泛應用于微服務架構中。在Nacos中,服務的健康檢查是一個核心功能&#xf…

【Python】使用MySQL綜合案例

數據說明: 一月份各省銷售數據:csv格式 二月份各省銷售數據:json格式 實現要求:將兩個文件中的數據存儲到數據庫中,并反向從數據庫中讀取數據存儲為json格式文件 本文提供數據 完成案例所需基礎 【Python】基礎知識(函數與數…

C++ 日志庫 log4cpp 編譯、壓測及其范例代碼 [全流程手工實踐]

文章目錄 一、 log4cpp官網二、下載三、編譯1.目錄結構如下2.configure 編譯3.cmake 編譯 四、測試五、壓測源碼及結果1.運行環境信息2.壓測源碼3.壓測結果 文章內容:包含了對其linux上的完整使用流程,下載、編譯、安裝、測試用例嘗試、以及一份自己寫好…

Qt | QTimer 類(計時器)

01、相關知識回顧 Qt C++ | QTimer經驗總結Qt | QDateTimeEdit、QDateEdit類和QTimeEdit類02、QTimer 類 1、QTimer 類是 QObejct 的直接子類,該類用于實現計時器,QTimer 類未繼承自 QW

IT革新狂潮:引領未來的技術趨勢

方向一:技術革新與行業應用 當前現狀: 量子計算:量子計算的研究正在加速,盡管目前仍處于初級階段,但其在藥物研發、加密技術和材料科學等領域的應用潛力已被廣泛認可。 虛擬現實(VR)與增強現實…

湖南大學OS-2018期末考試(不含解析)

前言 不知道哪里翻出來的一張,看著確實像期末考卷,暫且放一下。或許做過,或許沒做過。 總之答案不記得了。做完可以評論區發一下或者找我發出來。 共6道大題。 一、(30%) 1. (6%) 進程間通信的兩種方法分別是什么&…

完成所有任務的最少時間 - (LeetCode)

前言 今天也是很無精打采的一天,早上看到這道題,都有點懵逼,開始也不懂如何入手,既然自己搞不定,就順便測試了一下AI吧,測試了通義千問和文心一言,把題目拿去那里問,可以把解題思路…

DRF 跨域問題

【一】說明 CORS(跨來源資源共享,Cross-Origin Resource Sharing)是一種瀏覽器技術的規范,旨在解決瀏覽器同源策略(Same-Origin Policy)的限制,使得Web服務可以從不同的網域(源&…

error Error: certificate has expired

用yarn命令安裝依賴的時候遇到報錯: 原因:可能是開了服務器代理訪問導致ssl安全證書失效 解決方法: 在終端輸入 yarn config set "strict-ssl" false -g yarn config set "strict-ssl" false -g 然后再安裝依賴就不…

RS2227XN功能和參數介紹及PDF資料

RS2227XN是一款模擬開關/多路復用器 品牌: RUNIC(潤石) 封裝: MSOP-10 描述: USB2.0高速模擬開關 開關電路: 雙刀雙擲(DPDT) 通道數: 2 工作電壓: 1.8V~5.5V 導通電阻(RonVCC): 10Ω 功能:模擬開關/多路復用器 USB2.0高速模擬開關 工作電壓范圍:1.8V ~ 5…

Linux運行級別介紹

unlevel 運行級別 cat /etc/inittab 0 - halt (Do NOT set initdefault to this) --關機 1 - Single user mode --單用戶(進入單用戶不需要帳號與密碼) 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 多用戶(沒有網絡) 3…

Java基礎篇常見面試問題總結

文章目錄 1. 你是怎樣理解 OOP面向對象?2. 重載與重寫區別3. 接口與抽象類的區別4. 深拷貝與淺拷貝的理解5. 什么是自動拆裝箱? int和 Integer有什么區別6. 和 equals()區別7. String類 能被繼承嗎為什么用 final修飾8. final、finally、finalize區別 1. 你是怎樣理…

【C語言】6.C語言VS實用調試技巧(1)

文章目錄 1.什么是 bug2.什么是調試(debug)?3.Debug 和 Release4.VS調試快捷鍵4.1 環境準備4.2 調試快捷鍵 5.監視和內存觀察5.1 監視5.2 內存 1.什么是 bug bug現在一般是指在電腦系統或程序中,隱藏著的一些未被發現的缺陷或問題…

Git使用(3):版本管理

一、查看歷史 編寫一個java類進行測試 選擇Git -> Show Git Log查看日志。 第一次修改推送到遠程倉庫了,所以有origin(遠程倉庫地址),第二次修改只提交到本地倉庫所以沒有。 二、版本回退 1、本地回退 在要回退的版本上右鍵&a…

XLSX文件刪除了怎么找回?8個恢復方法,太實用了!

U盤作為一種便攜的存儲設備,隨之而來的數據丟失問題也讓人頭疼。尤其是當U盤中的XLSX文件(Excel 2007及以后版本的默認文件格式)被誤刪除或丟失時,如何高效找回這些數據成為了許多人關注的焦點。 本文將從XLSX文件的特性、U盤格式…

C++set關聯式容器

Cset 1. 關聯式容器 vector、list、deque、forward_list(C11)等STL容器,其底層為線性序列的數據結構,里面存儲的是元素本身,這樣的容器被統稱為序列式容器。而map、set是一種關聯式容器,關聯式容器也是用來存儲數據的&#xff0…