Skip to main content

fe-code-style

Fix FE (Java) code style issues using Checkstyle

معلومات المصدر

المستودع
apache/doris
آخر نشاط في المصدر
١٠ أبريل ٢٠٢٦ في ٠٦:٥٩
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١٦٬٠٩٠
التفرعات
٣٬٩٨١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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 |
عرض على GitHub