0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

靜態(tài)分析有助于管理Java中的風(fēng)險

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Jon Jarboe ? 2022-06-19 07:30 ? 次閱讀

今天的軟件開發(fā)團(tuán)隊承受著巨大的壓力;市場對高質(zhì)量、安全版本的需求不斷加快,而安全威脅也變得越來越復(fù)雜。考慮到產(chǎn)品故障和安全漏洞的高成本,在整個軟件開發(fā)過程中解決這些風(fēng)險比以往任何時候都更加重要。需要盡早發(fā)現(xiàn)潛在問題,以防止發(fā)布延遲或更糟糕的是,發(fā)布后失敗。

幸運的是,有許多工具可以幫助開發(fā)人員管理這些風(fēng)險,幫助在開發(fā)階段早期識別潛在問題,此時問題的破壞性較小且更容易修復(fù)。開發(fā)人員可以輕松訪問它們,并且在許多開發(fā)環(huán)境中易于使用。這適用于使用任何語言進(jìn)行編程的開發(fā)人員;但是,我們在本次討論中關(guān)注 Java。

靜態(tài)分析有助于降低風(fēng)險

在考慮 Java 或其他方面的靜態(tài)分析工具時,了解這些工具是什么很重要。術(shù)語“靜態(tài)分析”是指在不執(zhí)行程序的情況下分析程序的方法。正如我們將在下一節(jié)中看到的,靜態(tài)分析工具可用于生成從編碼標(biāo)準(zhǔn)違規(guī)到特定錯誤或漏洞的任何報告。簡而言之,靜態(tài)分析工具分析源代碼以找到對管理風(fēng)險有用的信息。

靜態(tài)分析的一個好處是它可以在開發(fā)周期的早期執(zhí)行,通常在應(yīng)用程序執(zhí)行之前。它通常集成到自動構(gòu)建中,因此幾乎沒有運行頻繁分析的開銷。通過將靜態(tài)分析集成到內(nèi)部開發(fā)循環(huán)中,用戶可以最大化他們從此類工具中獲得的價值。

當(dāng)與精心設(shè)計的開發(fā)過程結(jié)合使用時,靜態(tài)分析工具可以提供對軟件狀態(tài)的關(guān)鍵可見性。這使開發(fā)團(tuán)隊能夠了解其代碼中的風(fēng)險級別以及風(fēng)險所在的位置,以便他們可以采取行動來減輕或完全消除它(表 1)。單個工具通常專注于軟件開發(fā)團(tuán)隊面臨的特定問題,團(tuán)隊經(jīng)常使用這些工具的組合來全面了解他們的開發(fā)工作。

表 1:靜態(tài)分析工具通常會發(fā)現(xiàn)特定類型的問題,每種類型代表不同類型的風(fēng)險并需要不同類型的操作。

poYBAGKsSe6AMiHKAACpYcHfp3k480.png

開發(fā)人員傳統(tǒng)上通過簡單的 IDE 集成或作為獨立工具使用靜態(tài)分析工具。雖然這些工具為開發(fā)工作增加了重要價值,但隨著開發(fā)人員花費越來越多的時間使用和維護(hù)不同的工具以及篩選越來越多的結(jié)果,工具的激增也帶來了效率問題。為了明智地管理開發(fā)資源,團(tuán)隊必須能夠有效地管理、過濾和優(yōu)先考慮所有這些問題。

為了解決這些問題,開發(fā)測試平臺應(yīng)運而生,以便在一個地方統(tǒng)一和管理所有這些靜態(tài)分析信息,從而簡化用戶體驗并在更大范圍內(nèi)提高可見性和效率,同時提供相關(guān)的訪問控制和報告。開發(fā)測試平臺甚至開始通過在靜態(tài)分析過程中利用早期程序運行期間生成的工件來模糊靜態(tài)分析和其他類型分析之間的界限。例如,這些平臺可以在靜態(tài)分析期間使用來自測試運行的代碼覆蓋率信息來有效地自動識別缺失的測試用例。解決這個問題的傳統(tǒng)方法需要基于簡單的覆蓋閾值的大量手動工作。通過利用不同來源的數(shù)據(jù),

為 Java 選擇靜態(tài)分析工具

Java 最流行的免費靜態(tài)分析工具可能是 Checkstyle、PMD 和 FindBugs。雖然它們都屬于“靜態(tài)分析”的范疇,但它們的優(yōu)勢是如此不同,以至于許多人認(rèn)為這些工具是互補的,而不是替代品。

格紋風(fēng)格

Checkstyle 被稱為“一種開發(fā)工具,可幫助程序員編寫符合編碼標(biāo)準(zhǔn)的 Java 代碼 [1]”,盡管它并不嚴(yán)格限制自己執(zhí)行編碼標(biāo)準(zhǔn)。它為用戶提供了一個文檔化的 API 來定義他們自己的自定義檢查。典型的編碼標(biāo)準(zhǔn)利用基本規(guī)則使代碼更具可讀性,并減少未來代碼更改引入錯誤的可能性。標(biāo)準(zhǔn)傾向于定義有關(guān)格式(空格、括號、命名、注釋等)、繼承和可見性的約定。如果得到充分執(zhí)行,設(shè)計良好的編碼標(biāo)準(zhǔn)可以幫助開發(fā)人員降低風(fēng)險。但是,執(zhí)行起來可能很困難,因為編碼標(biāo)準(zhǔn)會產(chǎn)生很多違規(guī)行為,并且可能存在忽略嘈雜規(guī)則的巨大壓力。使用遺留代碼,這會使執(zhí)行新的編碼標(biāo)準(zhǔn)變得不可行。雖然 Checkstyle 發(fā)現(xiàn)的大多數(shù)問題不會影響代碼的正確性、健壯性或性能,但幫助開發(fā)人員快速理解其他人編寫的代碼具有真正的價值。如何量化這些違規(guī)所代表的風(fēng)險并不總是顯而易見的,直接從違規(guī)計數(shù)衡量風(fēng)險是有問題的,但這些計數(shù)的變化可以作為風(fēng)險變化的合理代理。

PMD

PMD 被描述為“……源代碼分析器。它會發(fā)現(xiàn)未使用的變量、空的 catch 塊、不必要的對象創(chuàng)建等等[2]?!?它也在不斷發(fā)展,目前的檢查主要集中在可能掩蓋開發(fā)人員錯誤的語法異常上,例如過于復(fù)雜的表達(dá)式、空塊、未使用的變量、參數(shù)和類成員。它還有一個流行的模塊來識別重復(fù)的代碼。因為它通常報告“可疑代碼”而不是特定的編碼錯誤或違反標(biāo)準(zhǔn)的情況,所以用戶需要仔細(xì)選擇為日常使用啟用的檢查。因為強制規(guī)則是由用戶選擇的,所以這個工具對遺留項目和新建項目都很有用,而且通常很容易將這些計數(shù)與風(fēng)險相關(guān)聯(lián)。很遺憾,

查找錯誤

FindBugs 可能是這些工具中最受歡迎的。它查找代碼中的實際錯誤,以及可疑代碼和標(biāo)準(zhǔn)違規(guī)。由于報告的問題范圍廣泛,因此使用包含項目最相關(guān)檢查的配置非常重要。對于遺留項目尤其如此,因為從一開始就更容易保持新項目的清潔。與 PMD 一樣,任何團(tuán)隊都可以從使用 FindBugs 中受益,并且將問題計數(shù)與風(fēng)險相關(guān)聯(lián)非常簡單。

商業(yè)靜態(tài)分析工具顯示出類似的多樣性,可以識別從標(biāo)準(zhǔn)違規(guī)到實際缺陷和安全漏洞的所有內(nèi)容。為了說明商業(yè)工具與免費工具的比較,我使用專有的靜態(tài)分析解決方案和 FindBugs 的 2.0.1 版分析了 Jenkins 作業(yè)管理系統(tǒng) (www.jenkins-ci.org) 的 1.496 版,啟用了所有檢查。 在此代碼庫中,識別出 852 個獨特問題——兩種產(chǎn)品僅識別出 28 個問題。該專有解決方案發(fā)現(xiàn)了 197 個獨特問題,其中 188 個來自影響較大的類別(安全和并發(fā)錯誤、資源泄漏和未處理的異常,如 null 取消引用)。FindBugs 發(fā)現(xiàn)了 627 個獨特問題,其中 29 個來自這些高影響類別。簡而言之,

開發(fā)測試——將所有內(nèi)容捆綁在一起

靜態(tài)分析工具是 Java 開發(fā)人員軟件開發(fā)工作中的強大盟友,因為這些工具使開發(fā)人員能夠深入了解整個軟件開發(fā)生命周期的風(fēng)險。它們通常很容易自動化,使用戶能夠花時間解決問題而不是運行工具。

在管理風(fēng)險方面,通常信息越多越好——只要這些信息能夠闡明開發(fā)人員關(guān)心的實際風(fēng)險來源。在決定采用哪些工具時,請記住不僅要考慮分析工具識別的問題類型,還要考慮這些工具如何協(xié)同工作以提供額外價值。此外,請務(wù)必適當(dāng)?shù)嘏渲盟鼈?,以免問題的數(shù)量使您的用戶不堪重負(fù)。

現(xiàn)代開發(fā)測試平臺通過將數(shù)據(jù)統(tǒng)一在一個地方、簡化用戶體驗并創(chuàng)造機會來提供更多價值,從而將測試工具提升到另一個層次。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2943

    瀏覽量

    104106
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2942

    瀏覽量

    66445
收藏 人收藏

    評論

    相關(guān)推薦

    【米爾NXP i.MX 93開發(fā)板試用評測】3、NXP的MCU工程目錄結(jié)構(gòu)和源碼分析

    環(huán)境無縫集成。 而NXP的項目工程,可以說是CMake工程的優(yōu)秀示范。 目錄結(jié)構(gòu) 這種目錄結(jié)構(gòu)有助于提高軟件開發(fā)的效率和質(zhì)量,特別是在大型項目和團(tuán)隊合作的環(huán)境。通過合理的組織和模塊化,可以使得項目
    發(fā)表于 09-21 21:11

    多級寬帶放大器各級之間pcb獨立分開,信號線用sma線相接,電源線用普通銅線導(dǎo)線,有助于抗干擾嗎?

    請問,多級寬帶放大器各級之間pcb獨立分開,信號線用sma線相接,電源線用普通銅線導(dǎo)線,有助于抗干擾么?
    發(fā)表于 09-05 06:35

    關(guān)于一些有助于優(yōu)化電源設(shè)計的新型材料

    眾所周知,人們對更高電源效率的追求正在推動性能的全方位提升。材料科學(xué)的進(jìn)步對于優(yōu)化電源設(shè)計和開發(fā)更高效、更緊湊和更可靠的解決方案發(fā)揮著關(guān)鍵作用。下文列出了一些有助于優(yōu)化電源設(shè)計的新材料。
    的頭像 發(fā)表于 08-29 15:26 ?207次閱讀

    MSPM0-高級控制計時器有助于實現(xiàn)更好的控制和更好的數(shù)字輸出

    電子發(fā)燒友網(wǎng)站提供《MSPM0-高級控制計時器有助于實現(xiàn)更好的控制和更好的數(shù)字輸出.pdf》資料免費下載
    發(fā)表于 08-28 11:30 ?0次下載
    MSPM0-高級控制計時器<b class='flag-5'>有助于</b>實現(xiàn)更好的控制和更好的數(shù)字輸出

    恒訊科技分析:香港站群服務(wù)器為什么要做偽靜態(tài)處理呢?

    提高搜索引擎優(yōu)化(SEO)效果:偽靜態(tài)處理可以使得動態(tài)網(wǎng)頁URL看起來像是靜態(tài)網(wǎng)頁的URL,這有助于搜索引擎更好地索引網(wǎng)站內(nèi)容。搜索引擎通常偏好靜態(tài)網(wǎng)頁,因為它們認(rèn)為
    的頭像 發(fā)表于 07-31 12:49 ?107次閱讀

    有助于提高網(wǎng)絡(luò)設(shè)備性能的FRAM SF25C20(MB85RS2MT)

    有助于提高網(wǎng)絡(luò)設(shè)備性能的FRAM SF25C20(MB85RS2MT)
    的頭像 發(fā)表于 07-25 09:49 ?155次閱讀
    <b class='flag-5'>有助于</b>提高網(wǎng)絡(luò)設(shè)備性能的FRAM SF25C20(MB85RS2MT)

    艾體寶干貨 IOTA流量分析秘籍第一招:網(wǎng)絡(luò)基線管理

    網(wǎng)絡(luò)基線管理是一項關(guān)鍵的網(wǎng)絡(luò)安全實踐,它有助于識別網(wǎng)絡(luò)的異常活動并及時采取措施。本文將探討如何利用IOTA這一強大的工具來捕獲和分析網(wǎng)絡(luò)流量,以便更有效地了解網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-02 14:53 ?218次閱讀
    艾體寶干貨  IOTA流量<b class='flag-5'>分析</b>秘籍第一招:網(wǎng)絡(luò)基線<b class='flag-5'>管理</b>

    愛普生的高精度傳感技術(shù)有助于監(jiān)控自動化

    Epson、JREast和NaganoKeiki聯(lián)合開發(fā)了一種適用于鐵路運營商的實用撓度監(jiān)測設(shè)備-愛普生的高精度傳感技術(shù)有助于監(jiān)控自動化-SeikoEpsonCorporation(TSE:6724
    的頭像 發(fā)表于 06-27 10:53 ?215次閱讀
    愛普生的高精度傳感技術(shù)<b class='flag-5'>有助于</b>監(jiān)控自動化

    PMU電源管理模塊如何精妙布局與高效供電?

    。 三、PMU模塊布局 1、在布局時,首要任務(wù)是處理DCDC部分。為了確保最佳性能和效率,應(yīng)使電感與焊盤管腳之間的連接線路盡可能短。這有助于減少電阻和電感對電流的影響,從而提高電源轉(zhuǎn)換效率。 2、相鄰
    發(fā)表于 06-07 17:43

    艾體寶觀察 | 2024,如何開展網(wǎng)絡(luò)安全風(fēng)險分析

    網(wǎng)絡(luò)安全控制措施,以及評估這些控制措施的有效性,并根據(jù)需要進(jìn)行調(diào)整。此過程有助于保護(hù)公司的數(shù)據(jù)、信息和資產(chǎn),預(yù)防網(wǎng)絡(luò)攻擊,并保障公司在日益互聯(lián)的數(shù)字領(lǐng)域中的安全和彈性。
    的頭像 發(fā)表于 04-22 14:15 ?251次閱讀

    在微芯片上使用3D反射器堆棧有助于加快6G通信的發(fā)展

    一項新的研究發(fā)現(xiàn),在微芯片上使用3D反射器堆??梢允篃o線鏈路的數(shù)據(jù)速率提高三倍,從而有助于加快6G通信的發(fā)展。
    的頭像 發(fā)表于 03-13 16:31 ?513次閱讀

    java文檔注釋的作用

    Java文檔注釋(JavaDoc)是一種特殊的注釋格式,用于對Java源代碼的類、方法和字段進(jìn)行解釋和說明。它有助于開發(fā)人員理解代碼的功能、使用和注意事項,并且還可以用于生成軟件文檔
    的頭像 發(fā)表于 11-28 17:02 ?744次閱讀

    ADI全新集成電路有助于監(jiān)測心率

    電子發(fā)燒友網(wǎng)站提供《ADI全新集成電路有助于監(jiān)測心率.pdf》資料免費下載
    發(fā)表于 11-24 10:38 ?0次下載
    ADI全新集成電路<b class='flag-5'>有助于</b>監(jiān)測心率

    多層pcb生產(chǎn),更有助于高精度布線

    多層pcb生產(chǎn),更有助于高精度布線
    的頭像 發(fā)表于 11-15 11:02 ?399次閱讀

    易云系統(tǒng)的設(shè)施管理功能有助于企業(yè)減少碳足跡

    。 ? 什么是數(shù)據(jù)分析,為什么其在設(shè)施管理和維護(hù)很重要? 數(shù)據(jù)分析是一門分析和處理原始數(shù)據(jù)以獲得有意義且可操作的見解的科學(xué),這些見解可用于
    的頭像 發(fā)表于 11-01 14:09 ?693次閱讀