Skip to main content

fe-code-style

Fix FE (Java) code style issues using Checkstyle

Source facts

Repository
apache/doris
Last source activity
April 10, 2026 at 06:59
Detected SKILL.md language
English
Stars
16,090
Forks
3,981

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
fe-code-style
description
Fix FE (Java) code style issues using Checkstyle
compatibility
opencode
## What I do Diagnose and fix Java code style issues in the FE module using the project's Checkstyle configuration. ## When to use me - Before committing FE Java code changes - When FE build fails due to checkstyle violations - When you need to understand FE style rules ## Procedure ### Step 1: Run checkstyle Checkstyle is integrated into the Maven build and runs automatically during `mvn validate`. To check style only (without full compilation): ```bash cd fe && mvn checkstyle:check -pl fe-core ``` Or as part of the normal build: ```bash ./build.sh --fe -j${DORIS_PARALLELISM} ``` If checkstyle fails, the build will fail with error messages showing the file, line number, and rule violated. ### Step 2: Interpret violations Checkstyle output looks like: ``` [ERROR] src/main/java/.../Foo.java:[42:5] (imports) UnusedImports: Unused import - java.util.List. [ERROR] src/main/java/.../Bar.java:[10] (header) RegexpHeader: Line does not match expected header line... ``` Each error shows: `[file]:[line:col] (category) RuleName: description`. ### Step 3: Fix common violations | Violation | Fix | |-----------|-----| | `RegexpHeader` | Add/fix Apache License header at file top | | `UnusedImports` | Remove unused import statements | | `LineLength` (>120 chars) | Break long lines | | `IllegalImport` (shaded classes) | Use the non-shaded equivalent (see `import-control.xml`) | | `FileTabCharacter` | Replace tabs with spaces | | `NewlineAtEndOfFile` | Ensure file ends with a newline | | `MergeConflictMarker` | Resolve git merge conflicts | ### Step 4: Verify fix After fixing, re-run checkstyle to confirm: ```bash cd fe && mvn checkstyle:check -pl fe-core ``` ## Key Configuration | File | Purpose | |------|---------| | `fe/check/checkstyle/checkstyle.xml` | Main rules (license header, line length 120, encoding, imports) | | `fe/check/checkstyle/suppressions.xml` | Rule exclusions (test files, nereids, large files) | | `fe/check/checkstyle/import-control.xml` | Import restrictions (no shaded classes, no old logging APIs, no Lombok in nereids) | | `fe/check/checkstyle/checkstyle-apache-header.txt` | Apache License 2.0 header template | | `build-support/IntelliJ-code-format.xml` | IntelliJ formatter scheme (120 col, import organization) | ## Suppression Rules Some files/packages have relaxed rules (see `suppressions.xml`): - Test files: Javadoc rules suppressed - Non-nereids code: Some strict rules suppressed - Specific large files: Individual suppressions ## Excluded Code The following are excluded from checkstyle (see `fe/pom.xml`): - `**/apache/doris/thrift/**/*` (generated Thrift code) - `**/apache/parquet/**/*` (generated Parquet code) ## Import Restrictions (key rules from import-control.xml) - **No shaded imports**: Do not use `org.apache.doris.thirdparty.*` directly - **No old logging**: Do not use `org.apache.commons.logging` or `java.util.logging` - **No SimpleDateFormat**: Use `java.time` APIs instead - **No Lombok in nereids**: `lombok` is disallowed in `org.apache.doris.nereids` package ## Troubleshooting | Problem | Solution | |---------|----------| | Build fails on `validate` phase | Run `mvn checkstyle:check -pl fe-core` to see specific violations | | Can't find checkstyle config | Ensure you're running from the `fe/` directory | | IntelliJ formatting differs | Import `build-support/IntelliJ-code-format.xml` via Settings → Editor → Code Style |
View on GitHub