本發(fā)明涉及軟件開發(fā),特別涉及一種wpf項目自動化優(yōu)化方法與系統(tǒng)。
背景技術(shù):
1、在wpf(windows?presentation?foundation)項目開發(fā)過程中,項目文件中常常會遺留一些未使用的圖片、資源或函數(shù),不僅占用存儲空間,還會影響項目的編譯和運行效率,通常的清理優(yōu)化方法依賴于人工檢查,存在工作效率低下、容易遺漏等問題。
技術(shù)實現(xiàn)思路
1、為了解決現(xiàn)有技術(shù)的缺陷,本發(fā)明提供了一種wpf項目自動化優(yōu)化方法與系統(tǒng)。
2、為了解決以上技術(shù)問題,本發(fā)明采用以下技術(shù)方案:
3、第一方面,本發(fā)明實施例提供一種wpf項目自動化優(yōu)化方法,包括如下步驟:
4、掃描wpf項目目錄及其所有子目錄,為掃描到的多媒體資源建立多媒體資源信息字典,所述多媒體資源信息字典包括多媒體資源文件名稱和多媒體資源路徑;
5、使用xdocument解析wpf項目的工程文件建立xaml資源信息字典,所述xaml資源信息字典包括key屬性值,xaml資源的起始位置,xaml資源的結(jié)束位置和xaml文件路徑;
6、讀取wpf項目的所有源代碼文件,生成源代碼文件內(nèi)容字典,所述源代碼文件內(nèi)容字典包括源代碼文本內(nèi)容和源代碼文件路徑;
7、基于所述多媒體資源信息字典,所述xaml資源信息字典和所述源代碼文件內(nèi)容字典,得到未使用的多媒體資源和未使用的xaml資源;
8、從所述wpf項目中,將所述未使用的多媒體資源和未使用的xaml資源刪除;
9、在wpf項目的工程文件中,移除對已刪除的多媒體資源的引用。
10、在一些實施例中,還包括:
11、使用roslyn的msbuildworkspace加載所述wpf項目,得到語法樹,再遍歷所述語法樹,生成函數(shù)定義信息;
12、基于所述函數(shù)定義信息,利用roslyn的語義模型分析功能遍歷所述語法樹,得到未使用的函數(shù);
13、從所述wpf項目中,將所述未使用的函數(shù)刪除。
14、在一些實施例中,還包括:
15、基于所述未使用的函數(shù)和所述源代碼文件內(nèi)容字典,確認所述未使用函數(shù)確實未被使用。
16、在一些實施例中,還包括:
17、從所述wpf項目中,將所述未使用的多媒體資源、未使用的xaml資源和未使用的函數(shù)刪除之前,先備份所述未使用的多媒體資源、未使用的xaml資源和未使用的函數(shù)。
18、在一些實施例中,所述使用xdocument解析wpf項目的工程文件建立xaml資源信息字典,所述xaml資源信息字典包括key屬性值,xaml資源的起始位置,xaml資源的結(jié)束位置和xaml文件路徑包括:
19、使用xdocument解析wpf項目的工程文件生成xaml文件信息字典,所述xaml文件信息字典包括xaml文件名稱和xaml文件路徑;
20、基于所述xaml文件信息字典,使用xdocument的load方法來加載xaml文件,查找所有resourcedictionary元素建立xaml資源信息字典,所述xaml資源信息字典包括key屬性值,xaml資源的起始位置,xaml資源的結(jié)束位置和xaml文件路徑。
21、第二方面,本發(fā)明實施例提供一種wpf項目自動化優(yōu)化系統(tǒng),包括:
22、多媒體資源信息字典建立模塊,用于掃描wpf項目目錄及其所有子目錄,為掃描到的多媒體資源建立多媒體資源信息字典,所述多媒體資源信息字典包括多媒體資源文件名稱和多媒體資源路徑;
23、xaml資源信息字典建立模塊,用于使用xdocument解析wpf項目的工程文件建立xaml資源信息字典,所述xaml資源信息字典包括key屬性值,xaml資源的起始位置,xaml資源的結(jié)束位置和xaml文件路徑;
24、源代碼文件內(nèi)容字典生成模塊,用于讀取wpf項目的所有源代碼文件,生成源代碼文件內(nèi)容字典,所述源代碼文件內(nèi)容字典包括源代碼文本內(nèi)容和源代碼文件路徑;
25、未使用資源獲取模塊,用于基于所述多媒體資源信息字典,所述xaml資源信息字典和所述源代碼文件內(nèi)容字典,得到未使用的多媒體資源和未使用的xaml資源;
26、未使用資源刪除模塊,用于從所述wpf項目中,將所述未使用的多媒體資源和未使用的xaml資源刪除;
27、多媒體資源引用移除模塊,用于在wpf項目的工程文件中,移除對已刪除的多媒體資源的引用。
28、在一些實施例中,還包括:
29、未使用函數(shù)獲取模塊,用于使用roslyn的msbuildworkspace加載所述wpf項目,得到語法樹,再遍歷所述語法樹,生成函數(shù)定義信息;
30、基于所述函數(shù)定義信息,利用roslyn的語義模型分析功能遍歷所述語法樹,得到未使用的函數(shù);
31、未使用函數(shù)刪除模塊,用于從所述wpf項目中,將所述未使用的函數(shù)刪除。
32、在一些實施例中,還包括:
33、未使用函數(shù)確認模塊,用于基于所述未使用的函數(shù)和所述源代碼文件內(nèi)容字典,確認所述未使用函數(shù)確實未被使用。
34、在一些實施例中,還包括:
35、備份模塊,用于從所述wpf項目中,將所述未使用的多媒體資源、未使用的xaml資源和未使用的函數(shù)刪除之前,先備份所述未使用的多媒體資源、未使用的xaml資源和未使用的函數(shù)。
36、在一些實施例中,所述使用xdocument解析wpf項目的工程文件建立xaml資源信息字典,所述xaml資源信息字典包括key屬性值,xaml資源的起始位置,xaml資源的結(jié)束位置和xaml文件路徑包括:
37、使用xdocument解析wpf項目的工程文件生成xaml文件信息字典,所述xaml文件信息字典包括xaml文件名稱和xaml文件路徑;
38、基于所述xaml文件信息字典,使用xdocument的load方法來加載xaml文件,查找所有resourcedictionary元素建立xaml資源信息字典,所述xaml資源信息字典包括key屬性值,xaml資源的起始位置,xaml資源的結(jié)束位置和xaml文件路徑。
39、本發(fā)明提供的一種wpf項目自動化優(yōu)化方法與系統(tǒng),與現(xiàn)有技術(shù)相比,本發(fā)明取得的技術(shù)效果包括:
40、1.本發(fā)明實施例,通過分析項目文件,自動查找未使用的多媒體資源和xaml資源,然后刪除這些未使用的資源,最終編譯項目并給出結(jié)果,以此替代了人工檢查,提高了工作效率,避免了遺漏,從而提高了wpf項目的性能和維護性。
41、2.本發(fā)明實施例通過分析項目文件,自動查找未使用的多媒體資源,xaml資源和函數(shù),然后刪除這些未使用的資源,最終編譯項目并給出結(jié)果,以此替代了人工檢查,進一步減少了項目所需的存儲空間,進一步提高了工作效率,避免了遺漏,從而提高了wpf項目的性能和維護性。
42、3.從wpf項目中,將未使用的多媒體資源、未使用的xaml資源和未使用的函數(shù)刪除之前,先備份所述未使用的多媒體資源、未使用的xaml資源和未使用的函數(shù),以便必要時恢復(fù),進一步提高wpf項目的維護性。