開發指南#
Logger 抽象化#
Apache Arrow Java 使用 SLF4J API,因此請設定 SLF4J 以查看日誌 (例如透過 Logback/Apache Log4j)
如果使用者未透過 Logback 或 Apache Log4j 新增任何 jar 相依性,則 SLF4J 將預設為無操作 (NOP) 日誌記錄。
如果使用者透過 Logback 或 Apache Log4j 新增任何相依性,但未設定/新增/定義 logback.xml/log4j2.xml,則日誌將預設為 DEBUG 模式。
若要停用偵錯日誌,使用者必須在其 logback.xml/log4j2.xml 中定義自己的規則,並定義自己的 logger。
單元測試#
單元測試由 Maven 在建置期間執行。
為了加速建置,您可以傳遞 -DskipTests 來略過它們。
$ cd arrow/java
$ mvn \
-Darrow.cpp.build.dir=../java-dist/lib -Parrow-jni \
-Darrow.c.jni.dist.dir=../java-dist/lib -Parrow-c-data \
clean install
效能測試#
arrow-performance
模組包含基準測試。
讓我們設定我們的環境以執行效能測試
如果您需要在 UI 上查看您的效能測試,則進行設定 (選用)
安裝 conbench
讓我們執行基準測試
$ cd benchmarks
$ conbench java-micro --help
$ conbench java-micro
--iterations=1
--commit=e90472e35b40f58b17d408438bb8de1641bfe6ef
--java-home=<absolute path to your java home>
--src=<absolute path to your arrow project>
--benchmark-filter=org.apache.arrow.adapter.AvroAdapterBenchmarks.testAvroToArrow
Benchmark Mode Cnt Score Error Units
AvroAdapterBenchmarks.testAvroToArrow avgt 725545.783 ns/op
Time to POST https://127.0.0.1:5000/api/login/ 0.14911699295043945
Time to POST https://127.0.0.1:5000/api/benchmarks/ 0.06116318702697754
然後前往: http://127.0.0.1:5000/ 以查看報告
使用者介面首頁

使用者介面執行

使用者介面基準測試

整合測試#
整合測試可以透過 Archery執行。 例如,假設您僅建置了 Arrow Java 並想要執行 IPC 整合測試,您將執行
$ archery integration --run-ipc --with-java 1
程式碼風格#
目前的 Java 程式碼遵循Google Java Style 與 Apache 授權標頭。
Java 程式碼風格在建置期間由Spotless檢查,並且持續整合建置將驗證變更是否符合風格指南。
自動修正程式碼風格問題#
您可以使用
mvn spotless:check
在不建置專案的情況下檢查風格。您可以使用
mvn spotless:apply
自動格式化原始碼。
範例
The following files had format violations:
src/main/java/org/apache/arrow/algorithm/rank/VectorRank.java
@@ -15,7 +15,6 @@
·*·limitations·under·the·License.
·*/
-
package·org.apache.arrow.algorithm.rank;
import·java.util.stream.IntStream;
Run 'mvn spotless:apply' to fix these violations.
Intellij IDEA 和 Eclipse 的程式碼格式化工具#
依照指示設定 google-java-format 以用於
Checkstyle#
Checkstyle 也用於一般程式碼檢查。 設定位於checkstyle。 您也可以在不建置專案的情況下檢查風格。 這會檢查目前目錄下或個別模組內所有原始碼的程式碼風格。
$ mvn checkstyle:check
Maven pom.xml
風格使用 Spotless 透過Apache Maven pom.xml 指南強制執行。 您也可以在不建置專案的情況下檢查風格。 這會檢查目前目錄下或個別模組內所有 pom.xml 檔案的風格。
$ mvn spotless:check
這會將風格套用至目前目錄下或個別模組內的所有 pom.xml 檔案。
$ mvn spotless:apply
建置快取#
建置快取透過 Develocity (前身為 Maven Enterprise) 完成。 若要強制執行不使用快取的建置,請執行
mvn clean install -Ddevelocity.cache.local.enabled=false -Ddevelocity.cache.remote.enabled=false
這對於確保您看到 ErrorProne 的所有警告很有用,例如。
ErrorProne#
應針對產生的程式碼停用 ErrorProne。