原創(chuàng)|行業(yè)資訊|編輯:鄭恭琳|2020-12-23 14:01:22.927|閱讀 256 次
概述:無論您使用哪種靜態(tài)分析工具,都可以通過以下10種方法來更新現(xiàn)有的靜態(tài)分析實(shí)現(xiàn)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
是否想清理您的靜態(tài)分析實(shí)踐?首先,清除導(dǎo)致您難以將精力放在真正關(guān)注的問題上的混亂雜事。接下來,通過擴(kuò)大活動范圍以增加對組織的價(jià)值來激發(fā)您的實(shí)踐。
您的開發(fā)團(tuán)隊(duì)是否對靜態(tài)分析工具中越來越多的違規(guī)行為感到不知所措?您當(dāng)前的靜態(tài)分析配置所產(chǎn)生的高水平噪聲是否使團(tuán)隊(duì)對所有警報(bào)(包括那些您認(rèn)為關(guān)鍵問題的警報(bào))不敏感?
無論您使用哪種靜態(tài)分析工具,都可以通過以下10種方法來更新現(xiàn)有的靜態(tài)分析實(shí)現(xiàn)。
檢查大量規(guī)則并不是通過靜態(tài)分析獲得最佳ROI的秘訣。實(shí)際上,在許多情況下,情況恰恰相反。如果您專注于最少但有意義的一組規(guī)則,則靜態(tài)分析實(shí)際上可以提供更好的結(jié)果。
當(dāng)您執(zhí)行靜態(tài)分析時(shí),就好像您讓經(jīng)驗(yàn)豐富的開發(fā)人員站在沒有經(jīng)驗(yàn)的開發(fā)人員的肩膀上,并在編寫代碼時(shí)向他提供提示。如果有經(jīng)驗(yàn)的開發(fā)人員在每幾行代碼中不斷挑剔,那么經(jīng)驗(yàn)不足的開發(fā)人員將很快不知所措,并開始過濾掉所有好的和壞的建議。但是,如果有經(jīng)驗(yàn)的開發(fā)人員專注于他知道可能會導(dǎo)致嚴(yán)重問題的一兩個(gè)問題,那么經(jīng)驗(yàn)不足的開發(fā)人員就很可能會記住所給出的建議,開始編寫更好的代碼,并且很欣賞收到這種反饋。
靜態(tài)分析也是如此。如果您保持它的可管理性和意義,那么您最終將更多地教您的開發(fā)人員,并讓他們對流程的重新關(guān)注減少。您是希望遵循一小套規(guī)則,還是不遵循大套規(guī)則?如果您真的不希望開發(fā)人員在收到舉報(bào)后立即清除違規(guī)行為,那么您可能要認(rèn)真考慮禁用該規(guī)則。
如果特定規(guī)則屢次遭到違反,那么現(xiàn)在是重新評估您是否真的要繼續(xù)檢查該規(guī)則的好機(jī)會。過多的違規(guī)表示開發(fā)人員未按照規(guī)則要求的方式編寫代碼。說服他們改變其編碼習(xí)慣可能會遇到很大的阻力。
您如何確定解決問題是否值得努力?首先,嘗試記住為什么首先要檢查該問題。您選擇它是因?yàn)?這似乎是解決您在現(xiàn)場遇到的問題的好方法?作為法規(guī)合規(guī)工作的一部分?還是僅因?yàn)楣?yīng)商默認(rèn)啟用了它?供應(yīng)商通常在其規(guī)則說明中為每個(gè)規(guī)則提供參考。閱讀這些描述可以幫助您確定該規(guī)則是否確實(shí)適合您的項(xiàng)目和目標(biāo)。
接下來,查看是否有其他方法可以達(dá)到預(yù)期的效果。還有其他更具體的規(guī)則嗎?有沒有一種方法可以微調(diào)規(guī)則參數(shù),使其不會經(jīng)常觸發(fā)?(有關(guān)技巧6的更多信息)。您甚至可以考慮編寫自己的更合適的規(guī)則,或者讓供應(yīng)商為您創(chuàng)建自定義規(guī)則。
如果您在重新檢查了該規(guī)則的好處并探索其替代方法后仍然有興趣檢查此規(guī)則,請獲取一些開發(fā)反饋,以了解遵循此規(guī)則可能涉及的內(nèi)容。然后,您可以使用此反饋來確定要求開發(fā)人員遵守此規(guī)則是否確實(shí)值得。如果看起來工作量很大,卻收效甚微,請繼續(xù)執(zhí)行并禁用該規(guī)則。
在某些情況下,您可能會遵守規(guī)則,但希望在某些情況下允許豁免。例如,也許您有一條規(guī)則,要求在代碼中執(zhí)行一些額外級別的驗(yàn)證。假設(shè)您有一種使用性能關(guān)鍵代碼的特定方法,該方法每分鐘被調(diào)用數(shù)百次,并且您已經(jīng)驗(yàn)證了在調(diào)用此特定方法之前已執(zhí)行了適當(dāng)級別的驗(yàn)證。或者,假設(shè)基于流的分析正在警告您某個(gè)嚴(yán)重問題,即您認(rèn)為100%確定無法在集成應(yīng)用程序中使用它。這是抑制派上用場的地方。
對于需要檢查的情況,抑制是最理想的選擇,但是您不關(guān)心在特殊情況下報(bào)告的問題。使用抑制,您可以繼續(xù)檢查關(guān)鍵問題,而不會收到有關(guān)故意違反規(guī)則的重復(fù)消息。如果您不想因違反特定規(guī)則而收到錯(cuò)誤消息,建議您完全禁用該規(guī)則(請參見第1點(diǎn))。
通常,您可以從靜態(tài)分析工具GUI,配置文件或源代碼本身定義抑制。在源代碼中定義抑制時(shí):
您確保在您或團(tuán)隊(duì)成員分析該代碼時(shí)都應(yīng)用相同的抑制。
您可以添加解釋每個(gè)抑制的代碼注釋,這樣當(dāng)您或團(tuán)隊(duì)成員查看或修改代碼時(shí),每個(gè)抑制的原因總是很清楚。
您可以獲得對在文件,類或行級別強(qiáng)制執(zhí)行哪些規(guī)則的細(xì)粒度控制。
通常,您可以禁止違反特定規(guī)則,多個(gè)規(guī)則或特定類別中的所有違規(guī)。您還可以將代碼的某些部分從所有靜態(tài)分析中免除(在此之后的更多內(nèi)容中)。
有時(shí),對某些文件(例如,自動生成的文件或您不打算接觸的舊文件)進(jìn)行靜態(tài)分析只是沒有意義。在這些情況下,應(yīng)防止對這些文件進(jìn)行分析。這是確保您的結(jié)果不會因您不打算解決的一系列違規(guī)問題而混亂的另一種方法。
有幾種方法可以做到這一點(diǎn)。您可以設(shè)置路徑過濾器以排除您不想檢查的文件,或僅包括您想檢查的文件。或者,您可以配置工具以跳過包含特定注釋的文件,例如,注釋指示自動生成的代碼。
其他檢查重點(diǎn)包括:
技巧5:將導(dǎo)致誤報(bào)的破壞規(guī)則通知靜態(tài)分析工具供應(yīng)商
在基于模式的靜態(tài)分析中,誤報(bào)是違反規(guī)則的行為,當(dāng)代碼實(shí)際遵循規(guī)則時(shí)會錯(cuò)誤地報(bào)告這些錯(cuò)誤。例如,如果規(guī)則說您擁有未關(guān)閉的資源(例如JDBC連接),則實(shí)際上該連接是關(guān)閉的,那么這是誤報(bào)。如果您確實(shí)要遵循這樣的規(guī)則,那么春季清潔是將其最終報(bào)告給供應(yīng)商的好時(shí)機(jī)。
請注意,如果您沿著這條路走下去,則需要確定自己所看到的是誤報(bào),而不是簡單地遵循自己不喜歡的規(guī)則。開發(fā)人員經(jīng)常將消息稱為“誤報(bào)”,因?yàn)樗麄儾幌矚g該規(guī)則,或者感覺不到該規(guī)則在這種情況下適用。此類消息不是誤報(bào),在這種情況下,您的供應(yīng)商將無法為您提供幫助。
但是,如果您可以減少一個(gè)顯示特定規(guī)則實(shí)際上是如何獲得錯(cuò)誤消息的簡單測試用例,則應(yīng)該發(fā)現(xiàn)大多數(shù)供應(yīng)商在糾正問題方面非常有幫助。
技巧6:自定義靜態(tài)分析規(guī)則參數(shù)以適合您的需求
降低噪聲因子的另一種方法是自定義規(guī)則參數(shù)。例如,假設(shè)您的團(tuán)隊(duì)正在進(jìn)行Android開發(fā),而您正在檢查一條Android規(guī)則,該規(guī)則要求“確保窗口小部件的更新時(shí)間不要太長?!?/span>
使用默認(rèn)設(shè)置時(shí),此規(guī)則將識別將小部件設(shè)置為每天更新4次以上的代碼。它通過標(biāo)記將標(biāo)簽[appwidget-provider]中的元素[android:updatePeriodMillis]設(shè)置為小于21600000的數(shù)字的代碼來實(shí)現(xiàn)。
假設(shè)獲取更新的信息對于您的應(yīng)用至關(guān)重要,因此您愿意為更頻繁的更新而犧牲一些電池電量。在這種情況下,您可能只希望每天更新超過8次才被警告。為此,您可以簡單地將“最長最大更新時(shí)間(以毫秒為單位)”規(guī)則參數(shù)從21600000 ms(6小時(shí))更新為10800000 ms(3小時(shí))。
如技巧2所述,如果規(guī)則沒有所需的參數(shù),則可以編寫一個(gè)新的規(guī)則,也可以讓供應(yīng)商(或顧問)為您編寫自定義規(guī)則。
您是否已經(jīng)厭倦了Security 123等同于ACME 3.1指南?Performance 987和Performance 567是否都與您的ACME 5.6準(zhǔn)則相關(guān)?即使您的工具說線程123的嚴(yán)重性為4,您的組織仍認(rèn)為違反該規(guī)則是非常嚴(yán)重的缺陷嗎?
如果是這樣,“春季大掃除”是映射供應(yīng)商的靜態(tài)分析規(guī)則集以匹配團(tuán)隊(duì)和/或組織定義的不同策略的好時(shí)機(jī)。大多數(shù)靜態(tài)分析工具可讓您自定義規(guī)則的嚴(yán)重性,ID和名稱,以及創(chuàng)建新的規(guī)則類別,以便已部署的規(guī)則與您自己的編碼策略文檔的內(nèi)容精確匹配。
如果您的組織執(zhí)行靜態(tài)分析作為合規(guī)性工作的一部分,這將使您的報(bào)告更加容易。
每個(gè)團(tuán)隊(duì)都有一個(gè)政策,無論是否正式定義。您最好將過程編成代碼并將其正式化。畢竟,采用正式的政策比不采用書面政策來識別和診斷問題要容易得多。
理想情況下,您希望自己的政策與您當(dāng)前遇到的問題(和/或致力于預(yù)防)直接相關(guān)。這樣一來,總體政策和具體實(shí)施方式都有著很好的依據(jù)。
考慮到這些目標(biāo),該政策應(yīng)闡明:
清除混亂情況后,您將可以使用團(tuán)隊(duì)進(jìn)行靜態(tài)分析了,報(bào)告的問題很少,而所報(bào)告的問題也得到了及時(shí)清理,您可以繼續(xù)進(jìn)行下一步,并擴(kuò)展檢查范圍。
擴(kuò)大檢查范圍的一種方法是添加更多對項(xiàng)目和目標(biāo)至關(guān)重要的規(guī)則。要對要添加的規(guī)則歸零,請考慮:
增加檢查范圍的另一種方法是檢查其他代碼。如果您最初將靜態(tài)分析工具設(shè)置為跳過舊文件(例如,跳過開始靜態(tài)分析的“截止”日期之后未添加或修改的所有文件),則可能需要考慮移回該截止日期,或者取消一共。
您可以使靜態(tài)分析過程自動化的程度越高,對開發(fā)人員的負(fù)擔(dān)就越小,并將他們從他們真正喜歡的更具挑戰(zhàn)性的任務(wù)中分散出來。另外,增加的自動化功能將幫助您在整個(gè)團(tuán)隊(duì)和整個(gè)組織中獲得一致的結(jié)果。
許多組織遵循多級自動化過程。每天,當(dāng)開發(fā)人員在IDE中處理代碼時(shí),他或她都可以按需運(yùn)行分析-或配置自動分析以在后臺連續(xù)運(yùn)行(就像拼寫檢查一樣)。開發(fā)人員在將新的或修改的代碼添加到源代碼管理之前清除這些違規(guī)行為。
然后,基于服務(wù)器的進(jìn)程會再次檢查簽入的代碼庫是否干凈。該分析可以作為每晚持續(xù)進(jìn)行的持續(xù)集成的一部分,等等,以確保沒有任何漏洞通過裂縫。通過這種基于服務(wù)器的流程,重要的是避免使用舊的向開發(fā)人員發(fā)送電子郵件的范例。有效工作流程的一部分是將錯(cuò)誤消息分發(fā)到開發(fā)人員編寫代碼的同一UI。電子郵件會強(qiáng)制執(zhí)行額外的步驟,從而導(dǎo)致違規(guī)行為丟失,浪費(fèi)時(shí)間在文件中查找正確的行以及對編碼人員的不滿,他們覺得自己在常規(guī)程序之外做了其他事情。
要通過自動化進(jìn)一步優(yōu)化工作流程,請考慮:
慧都大數(shù)據(jù),一直致力于將復(fù)雜的數(shù)據(jù)轉(zhuǎn)為清晰的見解,通過端到端的方案,將更好的滿足企業(yè)定制化生產(chǎn)的需求,提高企業(yè)運(yùn)營效率。
如果您的企業(yè)也有生產(chǎn)質(zhì)量分析、設(shè)備故障預(yù)測、工業(yè)大數(shù)據(jù)分析、能耗異常分析等需求,歡迎撥打慧都熱線023-68661681或,為您免費(fèi)提供大數(shù)據(jù)相關(guān)業(yè)務(wù)咨詢!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn