提高 android 程式碼品質的4個工具
在這篇文章中,我將透過不同的自動化工具如CheckStyle,FindBugs,PMD以及Android Lint來介紹(如何)來提高你的安卓程式碼品質。透過自動化的方式檢查你的程式碼非常有用,尤其當你在一個團隊中工作,為了在你的程式碼中保持嚴格的語法格式以及避免很多壞習慣和錯誤。我將仔細地介紹如何在你空閒的時候直接運用這些工具透過Gradle來建立腳本以及如何配置它們。
Fork該範例
我強烈建議你拷貝下這個專案工程,儘管我將介紹的案例都是來自它。同時,你將能夠測試下自己對這些工具的了解情況。
關於Gradle任務
Gradle任務的概念(在Gradle中的含義)是理解該篇文章(以及如何以一種通用的方式寫Gradle腳本)的基礎。我強烈建議你去看下這兩篇關於Gradle任務的文件(這篇和這篇)。這個文件包含了大量的例子,因此它非常容易開始學習。現在,我假定你拷貝了我的Repo,你導入這個工程到你的Android Studio,並且你熟悉Gradle任務。如果不是,別擔心,我將盡我最大的努力讓我的講解更有意義。
關於範例項目的層次結構
你可以將gradle腳本文件分割成很多文件,我現在已經有3個gradle文件:
根文件夾中的文件,這些文件或多或少都是關於這個項目的配置的(用的哪個Maven Repos,用的哪個版本的Gradle)。
App子資料夾中的檔案,這些檔案是典型的用於建立安卓應用程式的gradle檔案。
config子資料夾中的文件,這裡的文件才是我們關係的重點,因為我用這裡的文件保存和設定專案中的所有工具。
Checkstyle
簡介
「Checkstyle是一個開發工具用來幫助程式設計師編寫符合程式碼規範的Java程式碼。它能自動檢查Java程式碼為空閒的人進行無聊(但重要)的任務。
正如Checkstyle的開發者所言,這個工具能夠幫助你在專案中定義和維持一個非常精確和靈活的程式碼規範形式。當你啟動CheckStyle,它會根據所提供的設定檔分析你的Java程式碼並告訴你發現的所有錯誤。 Gradle的形式 下面的程式碼向你展示了在你的專案中使用Checkstyle的最基本的配置(如Gradle任務):task checkstyle(type: Checkstyle) { configFile file("${project.rootDir}/config/quality/checkstyle/checkstyle.xml") // Where my checkstyle config is... configProperties.checkstyleSuppressionsPath = file("${project.rootDir}/config/quality/checkstyle/suppressions.xml").absolutePath // Where is my suppressions file for checkstyle is... source 'src' include '**/*.java' exclude '**/gen/**' classpath = files() }
Checkstyle会发现大量的问题,特别是在你运用了大量的规则配置,如同你设置了一个非常精确的语法。尽管我通过Gradle使用 checkstyle,例如在我进行推送之前,我仍然推荐你为IntellJ/Android Studio使用checkstyle插件(你可以通过Android Studio的工作面板文件/设置/插件直接安装插件)。这种方式下,你可以根据那些为Gradle配置的相同文件在你的工程中使用 checkstyle,但是远不止这些,你可以直接在Android Studio中获取带有超链接结果,这些结果通过超链接在你的代码中对应,这是非常有用的(Gradle的这种方式仍然很重要的,因为你可以使用它自动构建系统,如Jenkins)。
Findbugs
简介
Findbugs是否需要一个简介呢?我想它的名称已经让人顾名思义了。“FindBugs使用静态分析方法为出现bug模式检查Java字节码”。FindBugs基本上只需要一个程序来做分析的字节码,所以这是非常容易使用。它能检测到常见的错误,如错误的布尔运算符。FindBugs也能够检测到由于误解语言特点的错误,如Java参数调整(这不是真的有可能因为它的参数是传值)。
Gradle的形式
下面的代码向你展示了在你的项目中使用Findbugs的最基本的配置(以Gradle任务为例):
task findbugs(type: FindBugs) { ignoreFailures = false effort = "max" reportLevel = "high" excludeFilter = new File("${project.rootDir}/config/quality/findbugs/findbugs-filter.xml") classes = files("${project.rootDir}/app/build/classes") source 'src' include '**/*.java' exclude '**/gen/**' reports { xml.enabled = false html.enabled = true xml { destination "$project.buildDir/reports/findbugs/findbugs.xml" } html { destination "$project.buildDir/reports/findbugs/findbugs.html" } } classpath = files() }
它是如此的像一个Checkstyle任务。尽管Findbugs支持HTML和XML两种报告形式,我选择HTML形式,因为这种形式更具有可读性。而且,你只需要把报告的位置设置为书签就可以快速访问它的位置。这个任务也会失败如果发现Findbgus错误失败(同样生成报告)。执行 FindBugs任务,就像执行CheckStyle任务(除了任务的名称是“FindBugs”)。
Findbugs的使用技巧
由于Android项目是从Java项目略有不同,我强烈推荐使用FindBugs过滤器(规则配置)。你可以在这一个例子(例如项目之一)。它基本上忽略了R文件和你的Manifest文件。顺便说一句,由于(使用)FindBugs分析你的代码,你至少需要编译一次你的代码才能够测试它。
PMD
简介
这个工具有个有趣的事实:PMD不存在一个准确的名称。(所以)在官网上你可以发现很有有趣的名称,例如:
Pretty Much Done
Project Meets Deadline
事实上,PMD是一个工作有点类似Findbugs的强大工具,但是(PMD)直接检查源代码而不是检查字节码(顺便说句,PMD适用很多语言)。 (PMD和Findbugs)的核心目标是相同的,通过静态分析方法找出哪些模式引起的bug。因此为什么同时使用Findbugs和PMD呢?好吧!尽管Findbugs和PMD拥有相同的目标,(但是)他们的检查方法是不同的。所以PMD有时检查出的bug但是Findbugs却检查不出来,反之亦然。
Gradle的形式
下面的代码向你展示了在你的项目中使用PMD的最基本的配置(以Gradle任务为例):
task pmd(type: Pmd) { ruleSetFiles = files("${project.rootDir}/config/quality/pmd/pmd-ruleset.xml") ignoreFailures = false ruleSets = [] source 'src' include '**/*.java' exclude '**/gen/**' reports { xml.enabled = false html.enabled = true xml { destination "$project.buildDir/reports/pmd/pmd.xml" } html { destination "$project.buildDir/reports/pmd/pmd.html" } } }
就PMD来说,它几乎与Findbugs相同。PMD支持HTML和XML两种报告形式,所以我再次选择HTML形式。我强烈建议你使用自己的通用配置集文件,正如同我在这个例子(check this file)中一样。所以,你当然应该去看下这些通用配置集文件。我建议你,因为PMD可比FindBugs更有争议的很多,例如:如果你不声明”if statement”或”if statement”为空,它基本上会给你警告信息。如果这些规则是正确的,或这对于您的项目(来说是正确的),我真的认可你和你队友的工作。我不希望程序因为”if statement”崩溃,我认为这样程序的可读性很差。执行PMD任务,就像是(执行)CheckStyle任务(除了任务的名称是“PMD”)。
PMD的使用技巧
我建议你不要使用默认的规则配置集,你需要添加这行代码(已经加上):
ruleSets = []
否则,因为默认值是这些基本的规则配置集,基本的规则配置集会和你定义的规则集一起执行。所以,如果你的自定义规则集不在那些基本配置集中,他们仍然会执行。
Android Lint
简介
“Android lint工具是一个静态代码分析工具,它能检查安卓项目源文件的潜在缺陷和优化改进的正确性,安全性,性能,可用性,可访问性和国际化。”
正如官方网站所说,Android Lint是另一种静态分析工具,专门为Android服务。它是非常强大的,能给你大量的建议以提高你的代码质量。
Gradle的形式
android { lintOptions { abortOnError true lintConfig file("${project.rootDir}/config/quality/lint/lint.xml") // if true, generate an HTML report (with issue explanations, sourcecode, etc) htmlReport true // optional path to report (default will be lint-results.html in the builddir) htmlOutput file("$project.buildDir/reports/lint/lint.html") }
我建议你使用一个单独的文件来定义哪些配置需要使用和不使用。这个网站根据最新的ADT版本定义了全部的配置。我的演示项目中的lint文件包含所有这些规则(ADT 21),包含等级为”ignore”的”severity”:
IconDensities:这个规则配置确保你定义每个图像资源中的(分辨率)密度(除了ldpi)。
IconDipSize:这个规则配置确保你为每个dip定义合适的资源(换句话来说,如果你没有为每个density设置相同的图片资源,则不需要重新设置图片大小)。
所以你可以重用这个lint文件并激活你想要的所有规则。执行Android Lint任务,就像执行CheckStyle任务(除了任务的名称是”lint”)。
Android Lint的使用技巧
对于Android Lint没有什么特别的技巧,只需要牢记Android Lint会测试所有配置规则,除了那些等级为“ignore”的“severity”的配置。因此如果发布了新版本ADT下的新配置规则,他们将被检查,而不是忽视。
实例演示
现在,你有所有的方法为您的项目使用这四个工具。显然,如果我们能同时使用这四个工具会更好。你可以添加你的gradle任务之间的依赖,比如当你执行一个任务,其他任务则是第一个完成后执行。通常在Gradle中,通过让工具具有“check”任务来达到工具之间的相互关系:
check.dependsOn ‘checkstyle’, ‘findbugs’, ‘pmd’, ‘lint’現在,當執行「check」 任務的時候,Checkstyle, Findbugs, PMD, and Android Lint將會同時執行。在你執行/ commiting / pushing / ask merge request 之前進行品質檢查是一個很棒的方式。
你可以在這個Gradle檔案中找到所有任務的一個完整範例。你可以把所有的品質設定檔和Gradle檔從你看到的示範實例中分開,這些示範的實例把一起都放在「config/quality」 資料夾下。
總結
在這篇文章中,利用Gradle對Android使用程式碼品質檢查工具是非常容易。比使用品質工具局部檢查您的專案在您自己的電腦上,這些工具可以用於自動構建如Jenkins/Hudson這樣的平台,讓您自動進行品質檢查,同時自動建立過程。執行所有我從CLI展現的測試,如同在 Jenkins/Hudson上執行,簡單地執行:
gradle check請隨時對這篇文章發表評論,或者問任何有關Android的問題。
原文連結 : How to improve quality and syntax of your Android code

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

隨著數字貨幣的普及和發展,越來越多的人開始關注和使用數字貨幣app。這些應用程序為用戶提供了便捷的管理和交易數字資產的方式。那麼,數字貨幣app到底是什麼軟件呢?讓我們深入了解,並盤點全球十大數字貨幣app。

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

推薦的加密貨幣交易平台包括:1. Binance:全球最大交易量,支持1400 幣種,FCA、MAS認證。 2. OKX:技術實力強,支持400 幣種,香港證監會批准。 3. Coinbase:美國最大合規平台,適合新手,SEC和FinCEN監管。 4. Kraken:歐洲老牌,ISO 27001認證,持美國MSB及英國FCA牌照。 5. Gate.io:幣種最全(800 ),低交易費,獲多國牌照。 6. Huobi Global:老牌平台,提供多種服務,持日本FSA及香港TCSP牌照。 7. KuCoin

火信和OKX Pay都不直接支持法幣支付。火信主要用於數字資產管理和交易,用戶需通過火幣交易所兌換法幣;OKX Pay專注於數字資產支付和轉賬,用戶需通過OKX平台兌換法幣。

數字貨幣App的前景廣闊,具體體現在:1. 技術創新驅動功能升級,通過DeFi與NFT融合及AI與大數據應用提升用戶體驗;2. 監管合規化趨勢,全球框架完善及AML、KYC要求趨嚴;3. 功能多元化與服務拓展,整合借貸、理財等服務並優化用戶體驗;4. 用戶基數與全球化擴張,預計2025年用戶規模突破10億。

2025年十大正規虛擬幣交易所app排名:1. OKX,2. Binance,3. 火幣,4. Coinbase,5. Kraken,6. Bitfinex,7. KuCoin,8. Gemini,9. Bitstamp,10. Poloniex,各自在安全性、用戶體驗、交易手續費、流動性、幣種豐富度、專業工具、合規性、隱私保護、槓桿交易、國際化程度、客戶服務等方面表現突出。

下載香港數字貨幣交易所APP的方法包括:1. 選擇合規平台,如OSL、HashKey或Binance HK等;2. 通過官方渠道下載,iOS用戶在App Store下載,Android用戶通過Google Play或官網下載;3. 註冊並驗證身份,使用香港手機號或郵箱,上傳身份和地址證明;4. 設置安全措施,啟用雙重身份驗證並定期檢查賬戶活動。

在幣圈中,所謂的三巨頭通常指的是三種最具影響力和廣泛使用的加密貨幣。這些加密貨幣在市場上佔據了重要的地位,並在交易量和市值方面都表現出色。同時,虛擬幣主流交易所APP也是投資者和交易者進行加密貨幣交易的重要工具。本文將詳細介紹幣圈中的三巨頭以及推薦前十名的虛擬幣主流交易所APP。
