Java代碼質量工具–概述

最近,我有機會在本地IT社區聚會上介紹了該主題。 這是基本演示:

Java代碼質量工具

以及更有意義的思維導圖:

但是,我認為我需要更深入地探討這一主題。 這篇博客文章應該像是在此方向上進行進一步調查的起點。

1. CodePro Analytix
這是提高軟件質量的出色??工具(Eclipse插件)。 它具有下一個關鍵功能:代碼分析,JUnit測試生成,JUnit測試編輯器,類似代碼分析,度量,代碼覆蓋率和依賴性分析。 2. PMD 它掃描Java源代碼并查找潛在的問題:可能的錯誤,死代碼,次優代碼,表達式過于復雜和重復代碼。 3. FindBugs 它查找Java程序中的錯誤。 它可以檢測各種常見的編碼錯誤,包括線程同步問題,濫用API方法等。 4.科貝圖拉 這是一個免費的Java工具,可以計算測試訪問的代碼的百分比。 它可以用來識別Java程序的哪些部分缺少測試覆蓋范圍。 它基于jcoverage。 5.艾瑪 它是基于字節碼檢測的快速Java代碼覆蓋工具。 它與現有工具的不同之處在于,它可以對大型企業軟件項目進行覆蓋范圍分析,同時強調快速的個人開發。 6. Checkstyle 它是一種開發工具,可幫助程序員編寫遵守編碼標準的Java代碼。 7. JBoss Tattletale JBoss Tattletale是一個工具,可以幫助您大致了解您正在從事的項目或您所依賴的產品。 該工具將遞歸掃描目錄中的JAR文件,并生成鏈接和格式化HTML報告。 8. UCDetector UCDetector(必需代碼檢測器)是一個開源eclipse插件工具,用于查找不必要的(死)java代碼。 它還嘗試使代碼最終,受保護或私有。 UCDetector還發現類之間的循環依賴關系。 9.聲納 Sonar是用于Java應用程序的連續質量控制工具。 其生活的基本目的是加入您現有的持續集成工具,以將所有開發項目置于質量控制之下。 10. XRadar XRadar是一個開放的,可擴展的代碼報告工具,該工具可以生成有關系統當前狀態和開發情況HTML / SVG報告。 使用DependencyFinder,JDepend,PMD,PMD-CPD,JavaNCSS,Cobertura,Checkstyle,XSource,JUnit,Java2HTML,ant和maven。 11. QALab QALab合并來自Checkstyle,PMD,FindBugs和Simian的數據,并將其顯示在一個合并的視圖中。 QALab跟蹤隨時間變化的情況,從而使您可以查看隨時間變化的趨勢。 您可以告訴天氣違反次數增加或減少的情況-在每個文件或整個項目中。 它還繪制了該數據的圖表。 QALab可以插入Maven或ant。 12. Clirr Clirr是用于檢查Java庫與舊版本的二進制和源兼容性的工具。 基本上,您給它提供了兩組jar文件,Clirr會轉儲出公共api中的更改列表。 可以將Clirr Ant任務配置為在檢測到不兼容的api更改時中斷構建。 在連續集成過程中,Clirr可以自動防止意外引入二進制或源兼容性問題。 13. JDiff JDiff是一個Javadoc doclet,當比較兩個API時,它會生成所有以任何方式刪除,添加或更改的所有程序包,類,構造函數,方法和字段(包括其文檔)HTML報告。 這對于準確描述產品的兩個版本之間發生了什么變化非常有用。 僅比較每個版本的API(應用程序編程接口)。 它不比較源代碼在執行時的功能。 14.吉林特 它通過執行數據流分析和構建鎖圖來檢查您的Java代碼并查找錯誤,不一致和同步問題。 15. JDepend JDepend遍歷Java類文件目錄,并為每個Java包生成設計質量指標。 JDepend允許您根據其可擴展性,可重用性和可維護性自動衡量設計的質量,以有效地管理和控制軟件包的依賴性。 16. cloc cloc計算許多編程語言中源代碼的空行,注釋行和物理行。 17. Dependometer Dependometer對軟件系統中的物理依賴關系進行靜態分析。 Dependometer根據邏輯體系結構驗證依賴關系,這些邏輯體系結構將系統分為類,包,子系統,垂直切片和層,并檢測這些結構元素之間的循環。 此外,它在不同的抽象層上計算許多質量指標,并報告違反所配置閾值的情況。 18. Hammurapi Hammurapi是一個開放源代碼檢查工具。 它的發行版中包含100多個檢查員,他們檢查代碼的不同方面:符合EJB規范,線程問題,編碼標準等等。 19. JavaNCSS JavaNCSS是一個簡單的命令行實用程序,它測量Java編程語言的兩個標準源代碼指標。 針對每個類和/或每個功能,全局收集度量。 20. DCD DCD在Java應用程序中找到無效代碼。 21.甲級 Classycle的分析器分析Java應用程序或庫中的靜態類和包依賴性。 這對于查找類或包之間的循環依賴關系特別有用。 Classycle與JDepend相似,后者也進行依賴關系分析,但僅在程序包級別。 22. ckjm 程序ckjm通過處理已編譯的Java文件的字節碼來計算Chidamber和Kemerer的面向對象的度量。 該程序為每個班級計算Chidamber和Kemerer提出的以下六個指標。 23. Jameleon Jameleon是一個自動化測試框架,技術用戶和非技術用戶都可以輕松使用。 Jameleon背后的主要概念之一是創建一組代表應用程序不同屏幕的關鍵字或標簽。 可以使用Java定義自動執行每個特定屏幕所需的所有邏輯,并將其映射到這些關鍵字。 然后,可以使用不同的數據集來組織關鍵字以形成測試腳本,而無需深入了解應用程序的工作方式。 然后,將測試腳本用于自動化測試并生成手動測試用例文檔。 24. DoctorJ DoctorJ在以下功能區域中分析Java代碼:文檔驗證,統計信息生成和語法分析。 25.麥克 Macker是Java開發人員的構建時體系結構規則檢查實用程序。 它旨在對程序員始終夢dream以求的項目的構架理想進行建模,然后打破-這有助于保持代碼的清潔和一致。 您可以定制規則文件以適合特定項目的結構,或者為代碼編寫一些通用的“良好實踐”規則。 Macker不會試圖將別人的規矩推到您的喉嚨上。 它非常靈活,并且編寫規則文件是每個唯一項目的開發過程的一部分。 26.魷魚 Squale是一個質量分析平臺,可以分析多語言軟件應用程序,以清晰,全面地顯示其質量:高級經理的高級要素和開發團隊的實用指標。 27. SourceMonitor 免費軟件程序SourceMonitor可讓您查看軟件源代碼的內部,以查明您擁有多少代碼并確定模塊的相對復雜性。 例如,您可以使用SourceMonitor來識別最有可能包含缺陷的代碼,因此需要進行正式審查。 28. Panopticon Panopticode項目提供了一組開源工具,用于收集,關聯和顯示代碼指標。 29. Eclipse Metrics插件 提供用于Eclipse平臺的指標計算和依賴性分析器插件。 用平均值和標準偏差測量各種指標,并檢測包裝和類型相關性中的周期并對其進行圖形化。 30. QJ-Pro QJ-Pro是針對軟件開發人員的全面軟件檢查工具。 開發人員可以在編寫程序時自動檢查其Java源代碼并提高Java編程技能。 QJ-Pro提供了描述性Java模式,解釋了易于出錯的代碼構造并為其提供了解決方案。 31.輪回 Byecycle是Eclipse的自動安排依賴性分析插件。 它的目標是使您在看到錯誤的代碼時感到惡心,并在看到良好的代碼時感到高興。 32.科夸 Coqua測量5種不同的Java代碼質量指標,為管理人員提供概述和歷史記錄,并為開發人員提供從代碼到細節的詳細視圖。 可以為每個團隊定義指標。 是大中型和/或海上項目的理想選擇。 33.依賴查找器 從大多數Java編譯器生成的Java類文件中提取依賴關系和OO度量。 34.Jalopy Jalopy是一種易于配置的源代碼格式化程序,可以檢測和修復Java代碼中可能出現的許多代碼約定缺陷。 Jalopy更像是代碼修復程序,而不是代碼檢查程序。 Jalopy插件適用于大多數IDE,并且在大多數情況下,它們可以與IDE無縫銜接。 35. JarAnalyzer JarAnalyzer是用于.jar文件的依賴項管理工具。 JarAnalyzer將分析給定目錄中的所有.jar,并確定每個之間的依賴關系。 輸出格式包括xml(包含用于將其轉換為html的樣式表)和GraphViz DOT,使您可以生成直觀的組件圖,以顯示.jar文件之間的關系。 xml輸出包括重要的設計指標,例如傳入和傳出耦合,抽象性,不穩定性和距離。 還有一個可用的Ant任務,允許您將JarAnalyzer包含在構建腳本中。 36.冷凝器 冷凝器是用于查找和刪除重復的Java代碼的工具。 與僅查找重復代碼的工具不同,Condenser的目的是在安全的地方自動刪除重復的代碼。 37.救濟 Relief對Java項目提供了新的外觀。 依靠我們通過檢查真實對象的形狀,大小或在空間中的相對位置來處理真實對象的能力,它對Java包,類型和字段及其關系提供了“物理”視圖,從而使它們更易于處理。 讓我們快速討論一下我們如何解釋物理屬性以及它如何幫助我們掌握項目特征。 38.股份公司 JCSC是一種功能強大的工具,可以根據高度定義的編碼標準和潛在的不良代碼來檢查源代碼。 該標準涵蓋了類,接口,字段,參數等的命名約定。 還可以定義類型(類/接口)的結構布局。 就像在方法之前或之后以及以什么順序放置字段一樣。 可以通過可見性或類型(實例,類,常量)定義順序。 方法同樣適用。 這些規則中的每一個都是高度可定制的。 通過定義在代碼中的空白處以及何時使用花括號,可以增強可讀性。 正確的JavaDoc的存在可以被強制執行,并且可以達到各種級別。 除此之外,它還會發現代碼中的弱點-潛在的錯誤-例如空的catch / finally塊,無默認切換,拋出“ Exception”類型,慢速代碼。 39.湯匙 Spoon是一個完全支持Java 5的Java程序處理器。它提供了完整且細粒度的Java元模型,可以在其中讀取和修改任何程序元素(類,方法,字段,語句,表達式等)。 通過使用純Java模板引擎,可以將Spoon用于驗證目的,以確保您的程序遵守某些編程約定或準則,或者用于程序轉換。 40. Lint4j Lint4j(“ Lint for Java”)是靜態Java源代碼和字節碼分析器,它檢測鎖定和線程問題,性能和可伸縮性問題,并通過執行類型,數據流和鎖定圖分析來檢查復雜的合同,例如Java序列化。 41. Crap4j Crap4j是CRAP(變更風險分析和預測)軟件度量標準的Java實現,這是一種輕度冒犯的度量標準名稱,有助于保護您免受真正冒犯的代碼的侵害。 42.路徑查找器 Java PathFinder(JPF)是用于驗證可執行Java字節碼程序的系統。 它的基本形式是一個Java虛擬機(JVM),用作顯式狀態軟件模型檢查器,系統地探索程序的所有潛在執行路徑,以發現違反諸如死鎖或未處理異常之類的屬性的情況。 與傳統的調試器不同,JPF報告導致缺陷的整個執行路徑。 JPF特別適合在多線程程序中發現難以測試的并發缺陷 43.煙灰 Soot可以用作優化或檢查類文件的獨立工具,也可以用作在Java字節碼上開發優化或轉換的框架。 44. ESC / Java2 Java版本2的擴展靜態檢查器(ESC / Java2)是一種編程工具,它通過對程序代碼及其形式注釋進行靜態分析,嘗試在帶有JML注釋的Java程序中查找常見的運行時錯誤。 用戶可以通過用特殊格式的注釋(稱為pragmas)注釋程序來控制ESC / Java2執行的檢查的數量和種類。

該列表包括開源和免費工具。 我故意排除了商業工具。 我確定還有更多工具。 如果您知道其中一些未在此處列出的信息,請在此帖子中添加評論。

別忘了分享!

參考: Java代碼質量工具-我們的JCG合作伙伴 Orest Ivasiv的概述 ,摘自Knowledge Is Everything博客。


翻譯自: https://www.javacodegeeks.com/2012/10/java-code-quality-tools-overview.html

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

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

相關文章

利用yum升級Centos6的gcc版本,使其支持C++11

下面的可以在centos6下工作,centos7下有問題。可能是因為centos下的scl我是拷貝的文件,沒有完全驗證centos6下肯定沒問題。 https://my.oschina.net/u/583362/blog/682123 和https://www.quyu.net/info/876.html 拷貝其關鍵內容就是: 1.使用 …

cuda版本查看_ubuntu安裝CUDA

0 寫在前面安裝環境:ubuntu18.04以及GTX1050Ti筆記本為什么要安裝CUDA? 參考百科,CUDA是英偉達推出的集成技術,通過該技術可利用GeForce 8 以后的GPU或者較新的Quadro GPU進行計算。例如典型的tensorflow-GPU和pyCUDA安裝之前都要…

HTML 標簽列表(功能排序) HTML 參考手冊- (HTML5 標準)

HTML 標簽列表&#xff08;功能排序&#xff09; HTML 參考手冊- (HTML5 標準) 功能排序 New : HTML5 新標簽 標簽描述基礎 <!DOCTYPE> 定義文檔類型。<html>定義一個 HTML 文檔<title>為文檔定義一個標題<body>定義文檔的主體<h1> to <h6>…

idea新建scala文件_IDEA maven項目中新建.scala文件

本文首發于我的博客[IDEA maven項目中新建.scala文件]分為三步第一步、IDEA中安裝scala插件1、搜索安裝File-Sittings-Plugins-搜索安裝scala2、安裝完成重啟安裝完成之后點擊重啟idea第二步、下載、安裝、配置Scala1、下載安裝Scala SDK本體搜索引擎搜索Scala SDK或者點我去Sc…

Linux中執行shell腳本的4種方法總結

文章來源&#xff1a;http://www.jb51.net/article/53924.htm 這篇文章主要介紹了Linux中執行shell腳本的4種方法總結,即在Linux中運行shell腳本的4種方法,需要的朋友可以參考下 bash shell 腳本的方法有多種&#xff0c;現在作個小結。假設我們編寫好的shell腳本的文件名為hel…

Log4j線程死鎖–案例研究

此案例研究描述了影響Weblogic Portal 10.0生產環境的Apache Log4j線程爭用問題的完整根本原因分析和解決方案。 它還將說明在開發和支持Java EE應用程序時適當的Java類加載器知識的重要性。 本文也是您提高線程轉儲分析技能和了解線程競爭條件的另一個機會。 環境規格 Java …

代碼實現:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字

import java.util.Scanner;/*題目&#xff1a;求saaaaaaaaaaaa...a的值&#xff0c;其中a是一個數字。例如222222222222222(此時共有5個數相加)&#xff0c;幾個數相加有鍵盤控制。 程序分析&#xff1a;關鍵是計算出每一項的值。*/public class Test08 {public static void ma…

堆棧跟蹤從何而來?

我認為&#xff0c;閱讀和理解堆棧跟蹤是每個程序員都必須具備的一項基本技能&#xff0c;以便有效地解決每種JVM語言的問題&#xff08;另請參閱&#xff1a; 過濾日志中無關的堆棧跟蹤行和首先記錄引起異常的根本原因 &#xff09;。 那么我們可以從一個小測驗開始嗎&#xf…

@select 怎么寫存儲過程_MySQL4:存儲過程和函數

什么是存儲過程簡單說&#xff0c;存儲過程就是一條或多條SQL語句的集合&#xff0c;可視為批文件&#xff0c;但是起作用不僅限于批處理。本文主要講解如何創建存儲過程和存儲函數以及變量的使用&#xff0c;如何調用、查看、修改、刪除存儲過程和存儲函數等。使用的數據庫和表…

跨域訪問-預請求及跨域常見問題

預請求 參考&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS#預請求 簡而言之&#xff0c;在跨域并且嘗試添加一些特殊頭及自定義頭的情況下&#xff0c;由于瀏覽器的安全機制&#xff0c;會加多一次OPTIONS預請求&#xff08;詢問請求&am…

mysql查詢優化之一:mysql查詢優化常用方式

一、為什么查詢速度會慢&#xff1f; 一個查詢的生命周期大致可以按照順序來看&#xff1a;從客戶端&#xff0c;到服務器&#xff0c;然后在服務器上進行解析&#xff0c;生成執行計劃&#xff0c;執行&#xff0c;并返回結果給客戶端。其中在“執行”階段包含了大量為了檢索…

修復Sonar中常見的Java安全代碼沖突

本文旨在向您展示如何快速修復最常見的Java安全代碼沖突。 它假定您熟悉代碼規則和違規的概念以及Sonar如何對其進行報告。 但是&#xff0c;如果您以前從未聽說過這些術語&#xff0c;則可以閱讀Sonar Concepts或即將出版的有關Sonar的書 &#xff0c;以獲取更詳細的解釋。 為…

理解ThreadLocal

ThreadLocal:線程本地存儲&#xff0c;為每個線程都創建了變量的副本&#xff0c;線程在訪問變量時&#xff0c;可以直接訪問自己內部的副本變量。 理解幾個概念&#xff1a; 在java中ThreadLocal是一個類。 ThreadMap是一個類&#xff0c; Thread類是線程類。 ThreadLocal…

抖音右上角一個小黃點是什么_抖音官方入駐視頻號,釋放了一個什么樣的信號?...

專注視頻號觀察第 328 篇這幾天&#xff0c;視頻號生態新入駐了一個企業號&#xff0c;在圈里引起不少的轟動&#xff0c;因為這個號的名字叫做———抖音。這件事在圈里引發不少的轟動&#xff0c;很多人驚嘆&#xff1a;“連抖音都來開視頻號了&#xff0c;你還在等什么&…

資源包技巧和最佳實踐

今天是資源捆綁日。 通常&#xff0c;這是Java中最著名的國際化機制&#xff08;i18n&#xff09;。 使用它應該很容易。 但是&#xff0c;在弄臟手時會出現許多小問題。 如果您有相同的想法&#xff0c;則此文章適合您。 基本 java.util.ResourceBundle定義了用于訪問Java中翻…

springMvc-文件上傳

趕時間&#xff0c;又在寫垃圾博客&#xff0c;在心里給自己一耳巴 1.單文件上傳 2.多文件上傳 代碼&#xff1a; 頁面&#xff1a; <!DOCTYPE html><html><head><meta charset"UTF-8"><title>Insert title here</title></he…

c cuda 指定gpu_GPU并行編程:熟練使用CUDA C語言

【IT168 專稿】一個大任務通常可能被分解成許多可以一起處理的小任務&#xff0c;以便創建一個解決方案&#xff0c;這和粉刷房子的道理是一樣的&#xff0c;在粉刷之前&#xff0c;假設你需要買5公升油漆和5把刷子&#xff0c;你可以自己一個人干完采購和粉刷的活&#xff0c;…

js中使用0 “” null undefined {}需要注意

注意&#xff1a;在js中0為空&#xff08;false&#xff09; &#xff0c;代表空的還有“”&#xff0c;null &#xff0c;undefined&#xff1b; 如果做判斷if(&#xff01;上面的四種值)&#xff1b;返回均為false console.log(!null);// true console.log(!0);//true consol…

PhpStorm 10.0.3破解版下載

漢化破解版軟件下載&#xff1a; http://pan.baidu.com/s/1geNO24r 密碼: d5ci 這個漢化破解軟件解決了大綱視圖里空白的問題。 先安裝騰訊電腦管家&#xff0c;然后安裝這個軟件&#xff0c;安裝到最后提示有個文件有病毒已刪除&#xff0c;點確定后正常使用。轉載于:https://…

Jenkins:部署JEE工件

隨著持續集成和持續交付的出現 &#xff0c;我們的構建被分為不同的步驟&#xff0c;以創建部署管道。 這些步驟中的一些步驟可以是例如編譯和運行快速測試&#xff0c;運行慢速測試&#xff0c;運行自動驗收測試或發布應用程序等。 部署流程的最后一步意味著將我們的產品&…