PVS-Studio(靜態(tài)代碼分析工具)
詳情介紹
PVS-Studio是一款易用的靜態(tài)代碼分析工具。PVS-Studio可以將軟件的代碼發(fā)送到本軟件上測(cè)試,也可以直接將布局模塊的函數(shù)添加到軟件上分析,從而找到錯(cuò)誤的編輯命令,讓您及時(shí)處理錯(cuò)誤的代碼,為后期應(yīng)用程序開(kāi)發(fā)提供更好的檢測(cè)功能;PVS-Studi其集成在Visual Studio 2012、2010、2008、2005和Embarcadero RAD Studio XE3 Update 1、XE3、XE2、XE、2010、2009等環(huán)境中,可以診斷C/C++/C+11應(yīng)用程序源代碼中的錯(cuò)誤;PVS-Studio相對(duì)于其他類型的方法而言,軟件采用的靜態(tài)代碼分析方法有明顯的優(yōu)越性,因?yàn)樗梢愿采w整個(gè)程序代碼,代碼檢查的過(guò)程在任何情況下都不會(huì)破壞代碼本身,分析過(guò)程完全由程序員控制,并決定是否需要修改代碼,有興趣的小伙伴快來(lái)下載體驗(yàn)吧!
2、PVS-Studio提供在線幫助
3、可以生成PDF文件
4、可以保存和下載分析結(jié)果
5、具有命令行啟動(dòng)能力
6、支持所有的內(nèi)核和處理器
7、評(píng)估64位代碼移植的復(fù)雜度
8、支持 Windows(LLP64)和Linux(LP64)的數(shù)據(jù)模型
9、交互式過(guò)濾器
10、易于融入團(tuán)隊(duì)開(kāi)發(fā)項(xiàng)目中
11、標(biāo)記程序文本僅檢查新代碼
2、閱讀軟件的許可協(xié)議,閱讀完成后點(diǎn)擊我接受許可協(xié)議,必須接受協(xié)議才能繼續(xù)安裝軟件
3、點(diǎn)擊“Browse”選擇軟件安裝位置
安裝向?qū)J(rèn)設(shè)置的軟件默認(rèn)安裝路徑為C:\Program Files (x86)\PVS-Studio
4、選擇需要安裝的組件,自行選擇勾選即可
5、確認(rèn)安裝信息,無(wú)誤,點(diǎn)擊Install進(jìn)行安裝
6、軟件安裝完成,安裝向?qū)?huì)提示完成軟件安裝向?qū)?,點(diǎn)擊Finish
7、雙擊打開(kāi)PVS-Studio軟件,點(diǎn)擊Tools--Options--Registration,將“key.txt”文件內(nèi)的姓名和注冊(cè)碼復(fù)制到軟件中
8、再點(diǎn)擊Help下的About,如下圖PVS-Studio可以放心使用
1、Go編程語(yǔ)言是為數(shù)不多的面向?qū)ο笳Z(yǔ)言之一,其特殊性體現(xiàn)在不提供任何類繼承方法或來(lái)自其他類的屬性,雖然類層次結(jié)構(gòu)是面向?qū)ο笳Z(yǔ)言的基石,但是也會(huì)使代碼更加死板,常見(jiàn)層次結(jié)構(gòu)中所有類有著微妙的聯(lián)系,改變其中任何一個(gè)類可能導(dǎo)致后代類發(fā)生變化或需要改變一個(gè)祖先類,遺傳有助于代碼耦合同時(shí)破壞后期修改代碼能力,從而減少代碼的靈活性
2、PVS-Studio除了創(chuàng)建死板的層次結(jié)構(gòu),對(duì)象繼承也束在一起,如果一個(gè)屬性或方法在類中命名卻未定義,那么平臺(tái)隱式搜索該祖先類以尋求匹配,可以自定義簡(jiǎn)單的方法覆蓋或復(fù)雜的多重繼承和模糊設(shè)計(jì)模式,避免繼承意味著避免復(fù)雜內(nèi)置行為的解決方案
二、傾向組合
1、代替繼承,Go語(yǔ)言建議對(duì)象組合,功能開(kāi)發(fā)程序員都熟悉函數(shù)組成,組合對(duì)象是相似的,如繼承,組合對(duì)象連接一個(gè)類到另一個(gè),但不是調(diào)度隱式類,組合對(duì)象需指定何時(shí)或如何使用連接類方法和屬性,這是會(huì)帶來(lái)有力結(jié)果的一個(gè)小小不便
2、使用組合對(duì)象,調(diào)度方法調(diào)用不同對(duì)象就變得微不足道了,可以根據(jù)不同情況下組合多個(gè)對(duì)象和調(diào)度不同對(duì)象,達(dá)到即使是多重繼承也無(wú)法實(shí)現(xiàn)的功能,在不使用靜態(tài)屬性和全局變量的情況下還可以共享常用對(duì)象和狀態(tài),組合對(duì)象提供了細(xì)粒度控制代碼,當(dāng)不知未來(lái)代碼會(huì)發(fā)生如何改變時(shí),該方法提供了巨大的便利
三、不要將偶然相似的代碼抽象化
1、開(kāi)發(fā)人員都學(xué)習(xí)了解DRY含義,它似乎變成了一個(gè)咒語(yǔ),當(dāng)我們編寫代碼時(shí)一旦發(fā)現(xiàn)相似的代碼就會(huì)刪除它,但是過(guò)于較真地刪除重復(fù)數(shù)據(jù)往往不利于靈活性,特別是刪除僅是表面的相似之處的代碼
2、打個(gè)比喻,兩個(gè)變量值均為200,一個(gè)變量指在列表上項(xiàng)目指定的最大數(shù)值,另一個(gè)被用于檢測(cè)HTTP響應(yīng)是否成功,從表面來(lái)看,兩個(gè)變量有相同的數(shù)值,人們很容易將MAX_ITEMS值設(shè)置為另一個(gè)變量,而不是設(shè)置數(shù)值200,但是如果將MAX_ITEMS設(shè)置等于HTTP_SUCCESS,那么是一個(gè)嚴(yán)重錯(cuò)誤,兩個(gè)結(jié)果值相同但是變量間并無(wú)聯(lián)系,具有更好靈活性的代碼需要有重復(fù)的代碼
3、以上的例子看起來(lái)很愚蠢,但是開(kāi)發(fā)者開(kāi)發(fā)時(shí)對(duì)模糊相似的代碼會(huì)有下意識(shí)的反應(yīng),很多時(shí)候,相似性只是偶然和毫無(wú)意義的
筆者對(duì)于表面相似的代碼變得非常謹(jǐn)慎,吸取了以往教訓(xùn),首先做出特定代碼變化是避免誤刪代碼的第一步,抽象化代碼(無(wú)論是自己還是別人、以前還是現(xiàn)在)可做出樂(lè)觀的假設(shè),如果很多自以為相似的代碼需要改變,那么它們都會(huì)以同樣的方式改變,但這些筆者并沒(méi)有遇到,且很多時(shí)候代碼改變并不是以共享方式
四、收縮抽象
1、抽象仍然是重要的,避免寫抽象代碼的一個(gè)方法是之前編寫過(guò)代碼后面不再寫盡量減少抽象的代碼的出現(xiàn),編寫少量抽象代碼且集中起來(lái),并且盡量不要調(diào)整代碼位置,如果真的需要調(diào)整位置卻不想改變代碼的抽象所有的應(yīng)用,那么更少的抽象對(duì)于修改版本更加容易
2、收縮抽象的一個(gè)關(guān)鍵技巧是區(qū)分概念,Cognitect的CTO Rich Hickey已重新將decomplet注入現(xiàn)代詞匯中,意為散開(kāi)通常,功能不同的代碼會(huì)被放到同一個(gè)的代碼塊中,散開(kāi)代碼功能會(huì)產(chǎn)生抽象起到特定的作用,如設(shè)置一個(gè)標(biāo)記,調(diào)用一個(gè)功能,然后取消標(biāo)記
3、小抽象也會(huì)有更廣泛地應(yīng)用,它們更容易相互組合,如果已習(xí)慣構(gòu)建小的抽象代碼,隨著項(xiàng)目的不斷成熟會(huì)有一個(gè)穩(wěn)固的積累,使其更容易在不需要編寫復(fù)雜代碼情況下引入復(fù)雜的需求
五、不要設(shè)想
更多的假設(shè)會(huì)讓代碼變得更加死板,避免設(shè)想使得代碼更容易變化
從目前我的項(xiàng)目中有一個(gè)實(shí)例:一個(gè)新鏈接應(yīng)該在新標(biāo)簽中打開(kāi)嗎?有些人支持新標(biāo)簽,則有人反對(duì),還有些都可以,通常情況下,這樣的爭(zhēng)論會(huì)通過(guò)權(quán)衡利弊,甚至做一些調(diào)查,遵循更好的選擇,但在這種情況下,有一個(gè)假設(shè)我們沒(méi)有做,鏈接沒(méi)有自身行為方法,因?yàn)槭俏覀兣渲眯袨?,我們目前通過(guò)功能指定是否打開(kāi)標(biāo)簽
我們僅需修改少部分的代碼來(lái)實(shí)現(xiàn)該選擇功能,不同的開(kāi)發(fā)者可以根據(jù)偏好設(shè)置不同的選項(xiàng),如果用戶想要關(guān)閉該選項(xiàng),無(wú)須任何的代碼改動(dòng)也是可以做到的,如果用戶不喜歡,我們也很容易配置符合每個(gè)用戶的喜好,應(yīng)用程序?qū)?huì)更加靈活因?yàn)槲覀儽苊饬嗽O(shè)想方式
?Visual Studio 2010 C,C++,C++0x
?Visual Studio 2008 C,C++
?Visual Studio 2005 C,C++
?Embarcadero RAD Studio XE3 Update 1包括C,C++,C++11,64位編譯器
?Embarcadero RAD Studio XE2 C,C++,C++0x
?Embarcadero RAD Studio XE C,C++
?Embarcadero RAD Studio 2010 C,C++
?Embarcadero RAD Studio 2009 C,C++
?MinGW C,C++,C++11
功能介紹
1、融合Visual Studio2005/2008/2010的開(kāi)發(fā)環(huán)境2、PVS-Studio提供在線幫助
3、可以生成PDF文件
4、可以保存和下載分析結(jié)果
5、具有命令行啟動(dòng)能力
6、支持所有的內(nèi)核和處理器
7、評(píng)估64位代碼移植的復(fù)雜度
8、支持 Windows(LLP64)和Linux(LP64)的數(shù)據(jù)模型
9、交互式過(guò)濾器
10、易于融入團(tuán)隊(duì)開(kāi)發(fā)項(xiàng)目中
11、標(biāo)記程序文本僅檢查新代碼
PVS-Studio安裝教程
1、下載軟件壓縮包文件,雙擊打開(kāi)“PVS-Studio.exe”,進(jìn)行安裝2、閱讀軟件的許可協(xié)議,閱讀完成后點(diǎn)擊我接受許可協(xié)議,必須接受協(xié)議才能繼續(xù)安裝軟件
3、點(diǎn)擊“Browse”選擇軟件安裝位置
安裝向?qū)J(rèn)設(shè)置的軟件默認(rèn)安裝路徑為C:\Program Files (x86)\PVS-Studio
4、選擇需要安裝的組件,自行選擇勾選即可
5、確認(rèn)安裝信息,無(wú)誤,點(diǎn)擊Install進(jìn)行安裝
6、軟件安裝完成,安裝向?qū)?huì)提示完成軟件安裝向?qū)?,點(diǎn)擊Finish
7、雙擊打開(kāi)PVS-Studio軟件,點(diǎn)擊Tools--Options--Registration,將“key.txt”文件內(nèi)的姓名和注冊(cè)碼復(fù)制到軟件中
8、再點(diǎn)擊Help下的About,如下圖PVS-Studio可以放心使用
軟件特色
一、避免繼承1、Go編程語(yǔ)言是為數(shù)不多的面向?qū)ο笳Z(yǔ)言之一,其特殊性體現(xiàn)在不提供任何類繼承方法或來(lái)自其他類的屬性,雖然類層次結(jié)構(gòu)是面向?qū)ο笳Z(yǔ)言的基石,但是也會(huì)使代碼更加死板,常見(jiàn)層次結(jié)構(gòu)中所有類有著微妙的聯(lián)系,改變其中任何一個(gè)類可能導(dǎo)致后代類發(fā)生變化或需要改變一個(gè)祖先類,遺傳有助于代碼耦合同時(shí)破壞后期修改代碼能力,從而減少代碼的靈活性
2、PVS-Studio除了創(chuàng)建死板的層次結(jié)構(gòu),對(duì)象繼承也束在一起,如果一個(gè)屬性或方法在類中命名卻未定義,那么平臺(tái)隱式搜索該祖先類以尋求匹配,可以自定義簡(jiǎn)單的方法覆蓋或復(fù)雜的多重繼承和模糊設(shè)計(jì)模式,避免繼承意味著避免復(fù)雜內(nèi)置行為的解決方案
二、傾向組合
1、代替繼承,Go語(yǔ)言建議對(duì)象組合,功能開(kāi)發(fā)程序員都熟悉函數(shù)組成,組合對(duì)象是相似的,如繼承,組合對(duì)象連接一個(gè)類到另一個(gè),但不是調(diào)度隱式類,組合對(duì)象需指定何時(shí)或如何使用連接類方法和屬性,這是會(huì)帶來(lái)有力結(jié)果的一個(gè)小小不便
2、使用組合對(duì)象,調(diào)度方法調(diào)用不同對(duì)象就變得微不足道了,可以根據(jù)不同情況下組合多個(gè)對(duì)象和調(diào)度不同對(duì)象,達(dá)到即使是多重繼承也無(wú)法實(shí)現(xiàn)的功能,在不使用靜態(tài)屬性和全局變量的情況下還可以共享常用對(duì)象和狀態(tài),組合對(duì)象提供了細(xì)粒度控制代碼,當(dāng)不知未來(lái)代碼會(huì)發(fā)生如何改變時(shí),該方法提供了巨大的便利
三、不要將偶然相似的代碼抽象化
1、開(kāi)發(fā)人員都學(xué)習(xí)了解DRY含義,它似乎變成了一個(gè)咒語(yǔ),當(dāng)我們編寫代碼時(shí)一旦發(fā)現(xiàn)相似的代碼就會(huì)刪除它,但是過(guò)于較真地刪除重復(fù)數(shù)據(jù)往往不利于靈活性,特別是刪除僅是表面的相似之處的代碼
2、打個(gè)比喻,兩個(gè)變量值均為200,一個(gè)變量指在列表上項(xiàng)目指定的最大數(shù)值,另一個(gè)被用于檢測(cè)HTTP響應(yīng)是否成功,從表面來(lái)看,兩個(gè)變量有相同的數(shù)值,人們很容易將MAX_ITEMS值設(shè)置為另一個(gè)變量,而不是設(shè)置數(shù)值200,但是如果將MAX_ITEMS設(shè)置等于HTTP_SUCCESS,那么是一個(gè)嚴(yán)重錯(cuò)誤,兩個(gè)結(jié)果值相同但是變量間并無(wú)聯(lián)系,具有更好靈活性的代碼需要有重復(fù)的代碼
3、以上的例子看起來(lái)很愚蠢,但是開(kāi)發(fā)者開(kāi)發(fā)時(shí)對(duì)模糊相似的代碼會(huì)有下意識(shí)的反應(yīng),很多時(shí)候,相似性只是偶然和毫無(wú)意義的
筆者對(duì)于表面相似的代碼變得非常謹(jǐn)慎,吸取了以往教訓(xùn),首先做出特定代碼變化是避免誤刪代碼的第一步,抽象化代碼(無(wú)論是自己還是別人、以前還是現(xiàn)在)可做出樂(lè)觀的假設(shè),如果很多自以為相似的代碼需要改變,那么它們都會(huì)以同樣的方式改變,但這些筆者并沒(méi)有遇到,且很多時(shí)候代碼改變并不是以共享方式
四、收縮抽象
1、抽象仍然是重要的,避免寫抽象代碼的一個(gè)方法是之前編寫過(guò)代碼后面不再寫盡量減少抽象的代碼的出現(xiàn),編寫少量抽象代碼且集中起來(lái),并且盡量不要調(diào)整代碼位置,如果真的需要調(diào)整位置卻不想改變代碼的抽象所有的應(yīng)用,那么更少的抽象對(duì)于修改版本更加容易
2、收縮抽象的一個(gè)關(guān)鍵技巧是區(qū)分概念,Cognitect的CTO Rich Hickey已重新將decomplet注入現(xiàn)代詞匯中,意為散開(kāi)通常,功能不同的代碼會(huì)被放到同一個(gè)的代碼塊中,散開(kāi)代碼功能會(huì)產(chǎn)生抽象起到特定的作用,如設(shè)置一個(gè)標(biāo)記,調(diào)用一個(gè)功能,然后取消標(biāo)記
3、小抽象也會(huì)有更廣泛地應(yīng)用,它們更容易相互組合,如果已習(xí)慣構(gòu)建小的抽象代碼,隨著項(xiàng)目的不斷成熟會(huì)有一個(gè)穩(wěn)固的積累,使其更容易在不需要編寫復(fù)雜代碼情況下引入復(fù)雜的需求
五、不要設(shè)想
更多的假設(shè)會(huì)讓代碼變得更加死板,避免設(shè)想使得代碼更容易變化
從目前我的項(xiàng)目中有一個(gè)實(shí)例:一個(gè)新鏈接應(yīng)該在新標(biāo)簽中打開(kāi)嗎?有些人支持新標(biāo)簽,則有人反對(duì),還有些都可以,通常情況下,這樣的爭(zhēng)論會(huì)通過(guò)權(quán)衡利弊,甚至做一些調(diào)查,遵循更好的選擇,但在這種情況下,有一個(gè)假設(shè)我們沒(méi)有做,鏈接沒(méi)有自身行為方法,因?yàn)槭俏覀兣渲眯袨?,我們目前通過(guò)功能指定是否打開(kāi)標(biāo)簽
我們僅需修改少部分的代碼來(lái)實(shí)現(xiàn)該選擇功能,不同的開(kāi)發(fā)者可以根據(jù)偏好設(shè)置不同的選項(xiàng),如果用戶想要關(guān)閉該選項(xiàng),無(wú)須任何的代碼改動(dòng)也是可以做到的,如果用戶不喜歡,我們也很容易配置符合每個(gè)用戶的喜好,應(yīng)用程序?qū)?huì)更加靈活因?yàn)槲覀儽苊饬嗽O(shè)想方式
支持的語(yǔ)言和運(yùn)行環(huán)境
?Visual Studio 2012 C,C++,C++11,C++/CX(WinRT)?Visual Studio 2010 C,C++,C++0x
?Visual Studio 2008 C,C++
?Visual Studio 2005 C,C++
?Embarcadero RAD Studio XE3 Update 1包括C,C++,C++11,64位編譯器
?Embarcadero RAD Studio XE2 C,C++,C++0x
?Embarcadero RAD Studio XE C,C++
?Embarcadero RAD Studio 2010 C,C++
?Embarcadero RAD Studio 2009 C,C++
?MinGW C,C++,C++11
下載地址
- 電腦版
PVS-Studio(靜態(tài)代碼分析工具) v7.30.80803.925
- 本地下載通道:
- 浙江電信下載
- 北京聯(lián)通下載
- 江蘇電信下載
- 廣東電信下載
同類軟件
JetBrains DataGrip 2024中文版 v2024.3.3官方版
RJ TextEd多功能文本編輯器 v16.26
RunJS(JavaScript代碼編輯器) v1.12.0
Masm for windows集成實(shí)驗(yàn)環(huán)境2023 官方版
Egret Wing(Egret項(xiàng)目集成開(kāi)發(fā)工具) v4.1.6
FPWIN GR(松下PLC編程軟件) v2.94官方版
Code Composer Studio(IDE集成開(kāi)發(fā)環(huán)境) v12.5.0.00007官方版
Drupal 7(開(kāi)源網(wǎng)站建設(shè)工具) 漢化版
網(wǎng)友評(píng)論
共0條評(píng)論(您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
類似軟件
-
understand5(靜態(tài)代碼分析工具) v5.1.1026 編程軟件 / 149.56M
精彩發(fā)現(xiàn)
換一換精品推薦
-
WeBuilder 2025(web代碼編輯器) v18.2官方版 編程軟件 / 119.32M
查看 -
360加固助手電腦版 v4.1.1.1368官方版 編程軟件 / 215.46M
查看 -
adobe muse cc 2018中文版 v13.0 編程軟件 / 802.9M
查看 -
youtrack電腦版 v2024.1.27971官方版 編程軟件 / 894.76M
查看 -
EasyBuilder500(步科觸摸屏編程軟件) v2.7.4 編程軟件 / 20.64M
查看
專題推薦
本類排行
月排行總排行