2014-04-07 66 views
3

我們使用FastReport進行報告生成。事實上,我們支付訪問源代碼的費用。如何處理第三方庫中的警告/提示?

我們目前正在使用FastReport的最新穩定版本。雖然它是爲我們的生產,每當我編譯足夠穩定,我看到這一點:

[dcc32 Hint] fs_iinirtti.pas(369): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list 
[dcc32 Hint] fs_iclassesrtti.pas(656): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list 
[dcc32 Hint] fs_iclassesrtti.pas(1014): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list 
[dcc32 Hint] fs_idialogsrtti.pas(159): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list 
[dcc32 Hint] fs_igraphicsrtti.pas(252): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list 
[dcc32 Hint] fs_iformsrtti.pas(429): H2443 Inline function 'TList.Remove' has not been expanded because unit 'System.Types' is not specified in USES list 

我不是暗示的粉絲,在我的代碼要少得多警告。現在,當然,H2443提示可能不是最令人擔憂的提示,但我仍然希望擺脫它。

幸運的是,如果它是我們自己的代碼,H2443是微不足道的修復(只需添加它所要求的引用)。但即使我們在這種情況下可以訪問第三方源代碼,但感覺不適當的會突然改變它。

所以我想知道:我應該等待FastReport的開發者發佈一個沒有錯誤的新版本,或者我應該自己修復它,然後在發佈新版本時簡單覆蓋源文件的副本?

我想這個問題在技術上可以概括爲如何處理第三方庫中的提示/警告。我想過通知開發者,但這不是一個開源/免費軟件項目,所以修復不會持續數月。

(憑心而論,我應該提到,有曾經在以前的版本更暗示,所以至少有朝着正確方向邁出的步驟。)

+0

你爲什麼在這裏發佈這個?我認爲最好聯繫FastReport。 –

+0

這個問題似乎是無關緊要的,因爲它涉及到第三方庫中的問題,應該發佈在他們的支持網站上。 –

+0

我以FastReport案例爲例。但我很好奇它是如何處理的;所以基本上只是聯繫開發人員並等待?我想那是一個很好的答案。那麼,這是一個答案。 – Svip

回答

9

這是我在Delphi開發人員中經常看到的常見錯誤(還有很多第三方供應商做錯了)。 爲什麼每次構建項目時都要編譯第三方庫?

使用DCU。將它們與源分開,並將庫路徑指向包含DCU的目錄。這不僅會加快構建過程(因爲它不會再次編譯第三方源,但使用DCU),它也不會用來自第三方庫的消息氾濫您的項目。

如果您想要進入這些組件的源代碼(您根本不需要這些),您可以將源代碼添加到瀏覽路徑中,甚至可以調試並釋放您正在使用的DCU。

+0

如果我有多個項目鏈接到不同版本的庫,該怎麼辦? –

+0

@DavidHeffernan:如果這些庫中的某些庫包含需要IDE註冊的組件,那麼這是一個難以置信的位置。 – afrazier

+1

然後,您可以像以前那樣爲項目添加適當的庫路徑,以便爲不同版本的源設置正確的路徑。去過也做過。我們甚至有一個包含第三方庫(包括dcu和bpls)的整個git倉庫,我們可以在爲不同版本的產品工作時切換(比如即將發佈的版本使用某個第三方組件的新版本) –

2

基本上有兩種,你可以採取的辦法。

  1. 如果您準備更改源代碼,請這樣做。而不是解決導致警告/提示的問題,只需禁用警告/提示即可。這是解決問題的最不具侵略性的方式。第三方庫很可能會附帶一個包含文件。您可以添加指令到包含文件來抑制警告/提示。每次收到新版本的第三方代碼時,使用版本控制可以輕鬆地重新應用這些修改。

  2. 如果您不能或不想更改源代碼,唯一的選擇是請求開發人員解決問題。

5

這是我做的:

第三方庫獲得本地自己的源代碼控制庫。如果他們是開源的,我嘗試克隆上游資源庫。如果不是,則每個新版本都是供應商分支中的新提交。我修復的任何提示/警告/錯誤都會提交給不同的分支併發送給供應商。如果他們接受修復,太棒了!如果沒有,那麼我自己仍然擁有這些補丁,新的上游版本可以簡單地合併到我自己的分支中。

相關問題