原創(chuàng)|行業(yè)資訊|編輯:鄭恭琳|2021-03-12 13:41:39.027|閱讀 151 次
概述:靜態(tài)分析是軟件質(zhì)量/安全性庫中最有價值的工具之一。正確執(zhí)行將帶來巨大的價值,但是錯誤執(zhí)行可能會使組織中的新一代編碼人員注定要使用過時的過時質(zhì)量和安全流程。如果您有任何疑問,請在下面的評論中讓我知道——很樂意就如何使靜態(tài)分析發(fā)揮作用進(jìn)行討論。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
作為有關(guān)成功程序員的7種習(xí)慣的系列文章的一部分,今天,我將討論確保靜態(tài)分析有效且可持續(xù)的幾種方法。
首先,最好從靜態(tài)分析策略開始。有些人想知道為什么這很重要,但這實(shí)際上對于成功的靜態(tài)分析計劃至關(guān)重要。您的策略將涵蓋諸如應(yīng)運(yùn)行哪些規(guī)則,什么時候可以忽略它們,何時必須修復(fù)它們,如何執(zhí)行抑制等等之類的事情。您還需要確定需要分析哪些代碼,即通過所有遺留代碼來進(jìn)行分析。您只是坐在那里,我們將在稍后討論。
如果沒有一致的策略,靜態(tài)分析將迅速演變?yōu)榕紶枅?zhí)行的錯誤查找程序,從而縮小了您從中獲得的價值。如果您從事醫(yī)療或汽車等合規(guī)性業(yè)務(wù),則無論如何都必須進(jìn)行靜態(tài)分析,這樣一來,您就可以正確地進(jìn)行分析并獲得一定的價值。
獲得正確的工具很重要。該工具需要在您使用的操作系統(tǒng)上的代碼編輯器(IDE)中使用您所使用的語言進(jìn)行工作。該工具應(yīng)支持服務(wù)器和in-IDE執(zhí)行,in-IDE(對于開發(fā)人員)和基于Web的報告(對于管理人員)。您需要能夠?qū)⒐ぞ吲渲脼閮H執(zhí)行所需的規(guī)則(而不僅僅是工具供應(yīng)商希望您運(yùn)行的規(guī)則)。成熟的工具具有開箱即用的啟動配置,可讓您采用MISRA,OWASP,CWE和PCI等行業(yè)計劃。
能夠使用自己的規(guī)則,想法和最佳實(shí)踐來擴(kuò)展該工具對您的長期成功也很重要。而且不要忘了技術(shù)支持–有人可以查看有關(guān)嘈雜規(guī)則的問題并幫助您解決這些問題嗎?您要使用開源并自己進(jìn)行修復(fù)嗎?通常,您是否使用供應(yīng)商服務(wù)來幫助您快速啟動項(xiàng)目并朝正確的方向前進(jìn)?
這些以及更多是選擇工具時要考慮的所有事情。不要陷入困境——它提供了關(guān)于工具是否真正能夠滿足您的需要的有用信息,而靜態(tài)分析工具的工作方式卻有所不同。
如上所述,很容易陷入陷阱,只需打開靜態(tài)分析工具中的任何規(guī)則即可。一些供應(yīng)商積極鼓勵這樣做,另一些甚至要求!每個人的軟件測試需求都不同。默認(rèn)配置可以幫助您入門,但是要成功,您必須自己進(jìn)行配置。
需要做的一些事情包括關(guān)閉嘈雜的規(guī)則并設(shè)置嚴(yán)重性級別以符合您自己的實(shí)際做法(您不希望工具在您認(rèn)為嚴(yán)重性較低時就說出一些關(guān)鍵內(nèi)容)。一個不明顯的提示是關(guān)閉您喜歡但不打算立即解決的規(guī)則。如果您有時間解決違規(guī)問題,請先打開規(guī)則,而不要先打開規(guī)則。當(dāng)告知開發(fā)人員并非所有規(guī)則都重要時,在報告它們時忽略它們只會導(dǎo)致沮喪和不良習(xí)慣。
您正在運(yùn)行的規(guī)則應(yīng)與您在現(xiàn)場遇到的問題,您可能會合理預(yù)期的問題,安全性問題,在代碼檢查過程中發(fā)現(xiàn)的問題以及任何合規(guī)性項(xiàng)目有關(guān)-您必須運(yùn)行的規(guī)則。
即使您擁有正確的規(guī)則,有時上下文也會使特定的靜態(tài)分析在代碼的一部分中顯得不重要,而在另一部分中仍然至關(guān)重要。您這里有一些選擇,其中最有價值的就是挫敗并關(guān)閉規(guī)則。如果您知道該規(guī)則可以在某些領(lǐng)域提供價值,那么這是一個錯誤的選擇。如果您的工具無法正確配置和抑制,則您選擇了錯誤的工具,返回上述步驟2。
一些陷入的陷阱是對結(jié)果進(jìn)行一些手動管理并散發(fā)出重要的結(jié)果。這是勞動密集型的,不可伸縮的,不可維護(hù)的,您將最終解決不那么重要的事情,而錯過了更重要的事情。您需要一個以數(shù)據(jù)為依據(jù)的流程,以幫助您評估哪些違規(guī)問題需要解決,哪些違規(guī)問題可以安全地忽略,然后提供一種標(biāo)記這些違規(guī)情況的方法,以免再次發(fā)生。理想情況下,這可以由開發(fā)人員直接在代碼所在的IDE中以及由管理人員,架構(gòu)師等在基于Web的UI中完成。
有些人將這些抑制作用放在單獨(dú)的系統(tǒng)中。這樣的好處是從不更改代碼,但是冒著在分支或重構(gòu)或存在某些同步問題時要求進(jìn)行返工的風(fēng)險。其他人則以特殊注釋的形式對代碼進(jìn)行了更改。盡管這確實(shí)需要進(jìn)行代碼更改,但它是持久且準(zhǔn)確的,并且還記錄了禁止的內(nèi)容-如果您經(jīng)過審核,那就很棒??紤]您的需求,并選擇最適合您的環(huán)境的方法。如果您的工具不支持這兩種工具,請返回步驟2。
舊版代碼與禁止相關(guān)。決定要如何處理舊代碼很重要。同樣,這取決于您的需求,但是我在下面介紹了幾種方法。
一些組織選擇僅在存在涉及這些代碼行的未解決的現(xiàn)場錯誤報告的情況下,才修復(fù)遺留代碼中的靜態(tài)分析違規(guī)問題——文件中的其他內(nèi)容都不應(yīng)被觸及。如果您的代碼確實(shí)很舊,或者更改的風(fēng)險很高,那么這是一個完全合理的策略。它將風(fēng)險最小化。
另一個想法是,無論如何,都可以修復(fù)文件中的所有內(nèi)容。這帶來了變更的風(fēng)險,但是如果您有一個好的單元測試套件(我們將在下一次討論),那么您不必?fù)?dān)心太多。從積極的方面來說,您觸摸的任何代碼都將具有最新的必需代碼標(biāo)準(zhǔn)和最佳實(shí)踐。過時的代碼將比以前少過時了。
您也可以執(zhí)行混合方法,或者只是在某個日期之前忽略所有舊代碼,而僅使用靜態(tài)分析。找出可以實(shí)現(xiàn)的目標(biāo)并以這種方式做到。首先,請考慮一下您提出的策略的風(fēng)險和收益。
靜態(tài)分析是軟件質(zhì)量/安全性庫中最有價值的工具之一。正確執(zhí)行將帶來巨大的價值,但是錯誤執(zhí)行可能會使組織中的新一代編碼人員注定要使用過時的過時質(zhì)量和安全流程。如果您有任何疑問,請在下面的評論中讓我知道——很樂意就如何使靜態(tài)分析發(fā)揮作用進(jìn)行討論。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn