博客
希望我們能(néng)與您分享和探讨成(chéng)長(cháng)中的點點滴滴
Helix QAC所提供的四種(zhǒng)抑制方式
分享到
今天我們要讨論的是Perforce的Helix QAC工具的錯誤抑制功能(néng)。Helix QAC提供了多種(zhǒng)不同的抑制功能(néng)可以使用在不同的場景下。這(zhè)些功能(néng)分爲:
• 透過(guò)注釋的方式來抑制錯誤
• 透過(guò)Baseline的方式來抑制錯誤
• 透過(guò)Dashboard的方式來抑制錯誤
• 透過(guò)#pragma的方式來抑制錯誤
我們會(huì)針對(duì)以上四種(zhǒng)不同的抑制方法來進(jìn)行讨論并了解在哪種(zhǒng)情況下使用哪種(zhǒng)抑制方式是比較建議的。
透過(guò)注釋的方式來抑制錯誤
Helix QAC可以讓使用者用C或C++的注釋方式(例如使用/* */或是//) 來抑制錯誤。舉例來說(shuō),用戶可以透過(guò)下方的貼圖看到,可以用注釋的方法來抑制錯誤。
抑制的主要形式是PRQA S <錯誤号>。S代表 Suppression (抑制),而錯誤号基本上就(jiù)是每條錯誤獨有的一個ID編号。除此之外,還(hái)有其他的注釋方法可以抑制某些區塊或是某段Source Code的錯誤。例如下方圖檔所寫的,可以使用EOF代表從492行的Code一直抑制到檔案的最後(hòu)一行(EOF = End of File),或使用 ++和-- 的方式來開(kāi)啓或者關閉抑制功能(néng)(例如0-9999 ++就(jiù)是抑制所有出的錯誤号的功能(néng)開(kāi)啓)。
若是有需要寫入一些額外的抑制的說(shuō)明,用戶也可以在抑制注釋的後(hòu)方寫入‘#’符号來聲明。
這(zhè)個透過(guò)注釋來抑制錯誤的方法是最通用的方式。使用這(zhè)個方法的好(hǎo)處在于這(zhè)個方式是非常彈性化的。使用者可以根據自己的需求來抑制一行或多行Source Code。當然這(zhè)個方法唯一的壞處就(jiù)是用戶必須把這(zhè)些注釋寫進(jìn)Source Code裡(lǐ)。有的時(shí)候,用戶可能(néng)不想要把QAC的注釋和自己本身的Project Code寫一起(qǐ),那麼(me)若是有這(zhè)樣(yàng)的需求的話,我們可以再看下方的“透過(guò)Dashboard的方式來抑制錯誤”的說(shuō)明。
透過(guò)BASLINE來抑制錯誤
這(zhè)個方式是讓用戶可以把以前版本的錯誤抑制,并不會(huì)在下一個版本的分析結果出現。這(zhè)個功能(néng)基本上可以讓用戶選擇一個版本或時(shí)間點,把之前的錯誤抑制,隻報告出之後(hòu)的錯誤。這(zhè)個抑制方法通常是适用于當用戶在分析Legacy Code,或從别人那裡(lǐ)繼承過(guò)來的Code,或甚至透過(guò)這(zhè)個方式,把需求修複的錯誤透過(guò)版本的方法來進(jìn)行分類。舉例來說(shuō)Legacy或是繼承來的Code,因爲不是自己開(kāi)發(fā)的,也無法修改,所以通常會(huì)透過(guò)這(zhè)種(zhǒng)抑制手段來把Legacy Code或第一版的錯誤先抑制住,然後(hòu)隻針對(duì)後(hòu)續開(kāi)發(fā)新增的Code來報告出需要修複的錯誤來。Baseline的功能(néng)會(huì)透過(guò)一個Diff的比較功能(néng),來分辨出哪一些是新增和舊的Code,然後(hòu)再套用抑制檔案。以上說(shuō)的Baseline是在本機上作比較。除此之外,Helix QAC也可以讓用戶設定版本管控工具的命令,來比較本機的版本和版本管控理裡(lǐ)最新的版本,或透過(guò)Helix QAC Dashboard[QAC的一個報告系統同居],比較本機的版本和之前上傳到Dashboard上的版本來做比較。不過(guò)不管使用哪一種(zhǒng)版本,抑制的信息最後(hòu)都(dōu)會(huì)存放在一個*.sup的抑制檔案。這(zhè)個檔案會(huì)放在Helix QAC Project目錄下的一個prqa根目錄裡(lǐ)––可以在這(zhè)個目錄下搜尋的到。
透過(guò)DASHBOARD來抑制錯誤
Helix QAC讓使用者可以在客戶端連線到Dashboard并在第一次上傳分析結果的時(shí)候創建一個Unified的Project。上傳結果後(hòu),使用者可以透過(guò)浏覽器連接到Dashboard,登錄後(hòu),就(jiù)可以看到上傳的Project Code和分析結果。使用者可以在 Dashboard上進(jìn)行抑制錯誤的動作。抑制以後(hòu),Dashboard會(huì)自己生成(chéng)一個*.sup檔案并保存起(qǐ)來。在這(zhè)之後(hòu),任何客戶端的Helix QAC使用者就(jiù)可以連接到Helix QAC Dashboard,然後(hòu)把這(zhè)個*.sup的抑制檔案下載下來。下載好(hǎo)以後(hòu),再次分析完就(jiù)可以看到在Dashboard上做的抑制會(huì)直接套用。若是想要移除這(zhè)些抑制,就(jiù)需要到Helix QAC Project目錄下的prqa目錄裡(lǐ)找到這(zhè)個*.sup的抑制檔案,然後(hòu)把它移除掉即可。若有需要可以随時(shí)再從客戶端下載一份*.sup。
Dashboard的好(hǎo)處除了在Code裡(lǐ)看不到任何QAC的抑制注釋以外,也可以透過(guò)這(zhè)個用法确保所有客戶端用的抑制設定都(dōu)是一樣(yàng)的––因爲所有的錯誤都(dōu)是透過(guò)Dashboard來做統一管理的。使用者可以設定登錄Dashboard的賬号權限,确保隻有有權限的人能(néng)做抑制,其他用戶就(jiù)隻能(néng)看結果,或下載抑制檔案來直接套用這(zhè)個設定來進(jìn)行分析。
透過(guò)#pragma來抑制錯誤
這(zhè)個抑制方法是注釋抑制的前身。這(zhè)個功能(néng)目前還(hái)能(néng)用,但是有可能(néng)會(huì)在未來的版本會(huì)被(bèi)移除。若是能(néng)的話,都(dōu)會(huì)建制使用者直接使用注釋抑制的手段而不是用這(zhè)個#pragma的抑制方法。這(zhè)個#pragma的錯誤抑制的方法是透過(guò)使用“#pragma PRQA_MESSAGE_OFF/ON”的語法,例如下方貼圖所顯示的。
若是用注釋抑制的方法來達到同樣(yàng)的效果,基本上就(jiù)會(huì)是如下方貼圖所顯示的。
最後(hòu),這(zhè)個#pragma的抑制方法可以套用在宏的擴展上。舉例來說(shuō):
#pragma PRQA_MACRO_MESSAGES_OFF “mymacro”
上方的範例會(huì)抑制所有的錯誤在任何‘mymacro’的擴展上
#pragma PRQA_MACRO_MESSAGES_OFF “mymacro” 3344
上方的範例隻會(huì)抑制錯誤ID 3344在任何“mymacro” 的擴展上
我們今天讨論了Helix QAC能(néng)提供的4種(zhǒng)抑制方法。我們可以從上方的說(shuō)明了解到如何使用這(zhè)些抑制錯誤的方法和建議在哪種(zhǒng)情況下會(huì)套用哪一種(zhǒng)方式會(huì)比較好(hǎo)。希望這(zhè)篇文章能(néng)讓大家更進(jìn)一步地了解Helix QAC的注釋方式。