團隊代碼風(fēng)格混亂?Spotless 幫你搞定!
1. 前言
大家好,我是飄渺。在今天的DDD與微服務(wù)系列文章中,我們將繼續(xù)探討一個關(guān)鍵主題:如何通過統(tǒng)一的代碼風(fēng)格來提升團隊協(xié)作效率。
在當(dāng)今流行的微服務(wù)架構(gòu)中,通常涉及多個開發(fā)團隊的協(xié)作。由于團隊規(guī)模龐大,不同開發(fā)者可能采用不同的編碼風(fēng)格,導(dǎo)致代碼不一致、難以閱讀。在這種情況下,代碼格式化工具變得尤為重要。Spotless 就是這樣一款工具,它不僅能夠自動進行代碼格式化,還能夠確保代碼始終符合預(yù)定的標(biāo)準(zhǔn)。通過保持一致的代碼風(fēng)格,Spotless 提升了代碼的可讀性和維護性,增強了團隊合作效率,無論是簡化代碼審查、提高代碼質(zhì)量,還是幫助新成員快速融入項目。
在本文中,我們將重點探討在 DailyMart 項目中如何借助 Spotless 實現(xiàn)整個項目的代碼風(fēng)格統(tǒng)一。
2. 使用指南
Spotless 的使用非常簡單。以下是官方示例代碼:
user@machine repo % mvn spotless:check
[ERROR]  > The following files had format violations:
[ERROR]  src\main\java\com\diffplug\gradle\spotless\FormatExtension.java
[ERROR]    -\t\t····if·(targets.length·==·0)·{
[ERROR]    +\t\tif·(targets.length·==·0)·{
[ERROR]  Run 'mvn spotless:apply' to fix these violations.
user@machine repo % mvn spotless:apply
[INFO] BUILD SUCCESS
user@machine repo % mvn spotless:check
[INFO] BUILD SUCCESS通過執(zhí)行 mvn spotless:check 命令,您可以檢查項目代碼是否存在格式問題。接著使用 mvn spotless:apply 進行代碼格式化。再次運行檢查命令時,格式錯誤將會消失。
3. 項目實戰(zhàn)
在 DailyMart 項目中,我使用 Spotless 實現(xiàn)了兩個關(guān)鍵方面的統(tǒng)一:Java 文件的 licenseHeader 和 Java 代碼的格式化。
Spotless 提供了多種 Java 代碼格式化方式,如 googleJavaFormat、eclipse、prettier 等?;诙ㄖ苹目紤],我選擇了使用 eclipse 進行 Java 代碼格式化。
3.1 在父POM文件中引入插件依賴
<build>
 <plugins>
  <!--此插件用于格式化代碼,mvn spotless:check mvn spotless:apply -->
  <plugin>
   <groupId>com.diffplug.spotless</groupId>
   <artifactId>spotless-maven-plugin</artifactId>
   <version>2.22.1</version>
   <configuration>
    <java>
     <eclipse>
      <file>dev-support/dailymart_spotless_formatter.xml</file>
     </eclipse>
     <licenseHeader>
      <file>dev-support/license-header</file>
     </licenseHeader>
    </java>
   </configuration>
  </plugin>
 </plugins>
</build>這段代碼將 Spotless 插件引入項目,并在配置中指定了 Java 代碼風(fēng)格文件和頭文件的路徑。
3.2 創(chuàng)建頭文件
在 dev-support 文件夾中創(chuàng)建頭文件 license-header,內(nèi)容如下:
/*
 * DailyMart is a microservice-based e-commerce project implemented
 * with Domain-Driven Design (DDD).
 * Copyright (C) 2023 Java日知錄
 *
 * ...
 */這樣,當(dāng)使用 Spotless 進行代碼格式化時,會為所有代碼文件添加這段頭信息。請注意,在頭文件后面留一個空行,以確保 licenseHeader 與 Java 代碼的 package 之間有足夠的間隔,以保持代碼的美觀性。
3.3 創(chuàng)建代碼格式文件
在 dev-support 中創(chuàng)建 dailymart_spotless_formatter.xml 文件,用于指定 Eclipse 代碼格式化的設(shè)置。以下是一個示例配置:
<profiles version="13">
    <profile kind="CodeFormatterProfile" name="DailyMart Code Style" version="13">
 <setting id="org.eclipse.jdt.core.compiler.source" value="1.8" />
 <setting id="org.eclipse.jdt.core.compiler.compliance" value="1.8" />
 <setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.8" />
 <setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="true" />
 <setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4" />
 <setting id="org.eclipse.jdt.core.formatter.lineSplit" value="200" />
 <setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="200" />
 <setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space" />
 <setting id="org.eclipse.jdt.core.formatter.indentation.size" value="1" />
        ...
 </proofile>
</profiles>完整配置請參考源代碼文件。您可以根據(jù)項目需要靈活調(diào)整代碼風(fēng)格。同時,我還提供了一個名為 eclipse-java-google-style.xml 的樣例配置文件,可以在以下地址找到:https://github.com/google/styleguide/blob/gh-pages/eclipse-java-google-style.xml
3.4 執(zhí)行代碼格式化
經(jīng)過上述步驟,我們就可以執(zhí)行以下命令來檢查 Java 代碼是否符合規(guī)范并進行格式化:
# 查看哪些代碼不符合代碼格式
mvn spotless:check
# 代碼格式化
mvn spotless:apply當(dāng)然,我們也可以直接在 IDEA 中使用 Maven 插件來執(zhí)行這些操作。只需點擊一下,即可完成整個過程。
圖片
3.5 將格式化綁定到 Maven 生命周期
在 DailyMart 實際應(yīng)用中,我選擇將 Spotless 格式化操作綁定到 compile 階段,這樣當(dāng)執(zhí)行 mvn install 時,代碼會自動進行格式化。
以下是在 POM 文件中配置的相關(guān)部分:
<build>
  <plugins>
    <!--此插件用于格式化代碼,mvn spotless:check mvn spotless:apply -->
    <plugin>
      <groupId>com.diffplug.spotless</groupId>
      <artifactId>spotless-maven-plugin</artifactId>
      <version>${spotless-maven-plugin.version}</version>
      <configuration>
        <java>
          <eclipse>
            <file>dev-support/dailymart_spotless_formatter.xml</file>
          </eclipse>
          <licenseHeader>
            <file>dev-support/license-header</file>
          </licenseHeader>
        </java>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>apply</goal>
          </goals>
          <phase>compile</phase>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>3.6 集成IDEA插件
如果開發(fā)者在編寫代碼時想要檢查單個文件是否符合規(guī)范,執(zhí)行 mvn spotless:check 或 mvn spotless:apply 或許稍顯繁瑣,因為默認(rèn)格式化范圍是整個項目。
但是,我們可以借助 IDEA 的插件 Adapter for Eclipse Code Formatter 來實現(xiàn)單個文件的格式化。只需將我們的自定義代碼文件替換原文件即可。
在IDEA中安裝 Adapter for Eclipse Code Formatter 插件
圖片
修改代碼格式化文件,將自定義的代碼風(fēng)格導(dǎo)入。
圖片
這樣,您就可以使用 IDEA 的快捷鍵對單個文件進行代碼格式化,同時使用的是您自定義的代碼風(fēng)格。
以上就是使用 Spotless 統(tǒng)一代碼風(fēng)格的實踐方法。通過這些步驟,你也可以輕松地在團隊中實施統(tǒng)一的代碼規(guī)范,從而提高代碼質(zhì)量和團隊協(xié)作效率。















 
 
 








 
 
 
 