chore: cleanup configs, docs, checkstyle, remove dead deps
This commit is contained in:
parent
984b364295
commit
d3d87c34e0
23 changed files with 1703 additions and 2231 deletions
|
|
@ -1,83 +1,115 @@
|
|||
# Checkstyle Configuration
|
||||
# Checkstyle Configuration | Конфигурация Checkstyle
|
||||
|
||||
Автоматическая проверка качества кода во время билда.
|
||||
This project uses **Google Java Style** for code quality enforcement.
|
||||
Проект использует **Google Java Style** для контроля качества кода.
|
||||
|
||||
## Правила
|
||||
---
|
||||
|
||||
### Размеры
|
||||
- **Файл**: максимум 150 строк
|
||||
- **Метод**: максимум 30 строк
|
||||
- **Строка**: максимум 120 символов
|
||||
- **Параметры**: максимум 5 параметров
|
||||
## 🇬🇧 English
|
||||
|
||||
### Сложность
|
||||
- **Cyclomatic Complexity**: максимум 10
|
||||
- **Вложенность if**: максимум 3 уровня
|
||||
- **Вложенность try**: максимум 2 уровня
|
||||
### Rules
|
||||
|
||||
### Качество кода
|
||||
- Нет дублирования строк (макс 2 повтора)
|
||||
- Нет магических чисел (кроме -1, 0, 1, 2, 3, 4, 5, 10, 20, 100)
|
||||
- Нет * импортов
|
||||
- Нет неиспользуемых импортов
|
||||
- Упрощение boolean выражений
|
||||
- equals() и hashCode() вместе
|
||||
Based on [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html):
|
||||
|
||||
### Форматирование
|
||||
- Отступы: 4 пробела
|
||||
- Скобки обязательны для if/for/while
|
||||
- Один оператор на строку
|
||||
- Пробелы вокруг операторов
|
||||
| Category | Rule | Value |
|
||||
|----------|------|-------|
|
||||
| **Indentation** | Basic offset | 2 spaces |
|
||||
| **Indentation** | Continuation indent | 4 spaces |
|
||||
| **Line length** | Max characters | 100 |
|
||||
| **File length** | Max lines | 600 |
|
||||
| **Method length** | Max lines | 60 |
|
||||
| **Complexity** | Cyclomatic complexity | ≤ 15 |
|
||||
| **Parameters** | Max per method | 7 |
|
||||
| **Nested if** | Max depth | 3 |
|
||||
| **Nested try** | Max depth | 2 |
|
||||
|
||||
## Запуск проверки
|
||||
### Key Requirements
|
||||
|
||||
- **Spaces only** — no tabs
|
||||
- **Braces** — required for `if`, `for`, `while`, `do`
|
||||
- **Imports** — no wildcards, no unused imports, grouped ordering
|
||||
- **Javadoc** — required on all public/protected methods and types
|
||||
- **Naming** — camelCase, no abbreviations (except allowed: IO, URL, HTML, etc.)
|
||||
|
||||
### Running
|
||||
|
||||
```bash
|
||||
# Проверить весь проект
|
||||
# Full check
|
||||
./gradlew check
|
||||
|
||||
# Проверить только LoChat
|
||||
# Only LoChat
|
||||
./gradlew checkstyleMain
|
||||
|
||||
# Проверить только LoHub
|
||||
./gradlew :lohub:checkstyleMain
|
||||
|
||||
# Проверить только LoVelocity
|
||||
./gradlew :lovelocity:checkstyleMain
|
||||
```
|
||||
|
||||
## Отчеты
|
||||
### Reports
|
||||
|
||||
После проверки отчеты доступны в:
|
||||
After check, reports are available at:
|
||||
- `build/reports/checkstyle/main.html`
|
||||
- `lohub/build/reports/checkstyle/main.html`
|
||||
- `lovelocity/build/reports/checkstyle/main.html`
|
||||
|
||||
## Отключение проверки
|
||||
### IntelliJ IDEA Setup
|
||||
|
||||
Если нужно временно отключить проверку для конкретного файла:
|
||||
1. Install "CheckStyle-IDEA" plugin
|
||||
2. Settings → Tools → Checkstyle
|
||||
3. Add configuration: `config/checkstyle/checkstyle.xml`
|
||||
|
||||
---
|
||||
|
||||
## 🇷🇺 Русский
|
||||
|
||||
### Правила
|
||||
|
||||
Основаны на [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html):
|
||||
|
||||
| Категория | Правило | Значение |
|
||||
|-----------|---------|----------|
|
||||
| **Отступы** | Основной | 2 пробела |
|
||||
| **Отступы** | Перенос строки | 4 пробела |
|
||||
| **Длина строки** | Максимум | 100 символов |
|
||||
| **Длина файла** | Максимум | 600 строк |
|
||||
| **Длина метода** | Максимум | 60 строк |
|
||||
| **Сложность** | Цикломатическая | ≤ 15 |
|
||||
| **Параметры** | Макс. на метод | 7 |
|
||||
| **Вложенность if** | Макс. глубина | 3 |
|
||||
| **Вложенность try** | Макс. глубина | 2 |
|
||||
|
||||
### Ключевые требования
|
||||
|
||||
- **Только пробелы** — никаких табуляций
|
||||
- **Скобки** — обязательны для `if`, `for`, `while`, `do`
|
||||
- **Импорты** — без *-импортов, без неиспользуемых, группировка
|
||||
- **Javadoc** — обязателен для всех public/protected методов и типов
|
||||
- **Именование** — camelCase, без сокращений (кроме разрешённых: IO, URL, HTML и т.д.)
|
||||
|
||||
### Запуск
|
||||
|
||||
```bash
|
||||
# Полная проверка
|
||||
./gradlew check
|
||||
|
||||
# Только LoChat
|
||||
./gradlew checkstyleMain
|
||||
```
|
||||
|
||||
### Отчёты
|
||||
|
||||
После проверки отчёты доступны в:
|
||||
- `build/reports/checkstyle/main.html`
|
||||
|
||||
### Настройка IntelliJ IDEA
|
||||
|
||||
1. Установите плагин "CheckStyle-IDEA"
|
||||
2. Settings → Tools → Checkstyle
|
||||
3. Добавьте конфигурацию: `config/checkstyle/checkstyle.xml`
|
||||
|
||||
### Disabling Checks | Отключение проверок
|
||||
|
||||
```java
|
||||
// CHECKSTYLE:OFF
|
||||
public class MyClass {
|
||||
// код без проверки
|
||||
// code without checks
|
||||
}
|
||||
// CHECKSTYLE:ON
|
||||
```
|
||||
|
||||
Или для конкретной строки:
|
||||
|
||||
```java
|
||||
// Per line:
|
||||
private static final int MAGIC = 42; // CHECKSTYLE IGNORE MagicNumber
|
||||
```
|
||||
|
||||
## Интеграция с IDE
|
||||
|
||||
### IntelliJ IDEA
|
||||
1. Установить плагин "CheckStyle-IDEA"
|
||||
2. Settings → Tools → Checkstyle
|
||||
3. Добавить конфиг: `config/checkstyle/checkstyle.xml`
|
||||
4. Активировать проверку в реальном времени
|
||||
|
||||
### VS Code
|
||||
1. Установить расширение "Checkstyle for Java"
|
||||
2. Настроить путь к конфигу в settings.json
|
||||
|
|
|
|||
|
|
@ -3,71 +3,185 @@
|
|||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
||||
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
||||
|
||||
<!--
|
||||
Google Java Style configuration for LoChat.
|
||||
Based on Google Java Style Guide:
|
||||
https://google.github.io/styleguide/javaguide.html
|
||||
-->
|
||||
<module name="Checker">
|
||||
<property name="charset" value="UTF-8"/>
|
||||
<property name="severity" value="warning"/>
|
||||
<property name="fileExtensions" value="java"/>
|
||||
|
||||
<!-- File length: max 600 lines -->
|
||||
<module name="FileLength">
|
||||
<property name="max" value="600"/>
|
||||
</module>
|
||||
|
||||
<!-- Line length: max 100 characters (Google style) -->
|
||||
<module name="LineLength">
|
||||
<property name="max" value="140"/>
|
||||
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
|
||||
<property name="max" value="100"/>
|
||||
<property name="ignorePattern"
|
||||
value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
|
||||
</module>
|
||||
|
||||
<!-- No tabs allowed (Google style: spaces only) -->
|
||||
<module name="FileTabCharacter"/>
|
||||
|
||||
<module name="TreeWalker">
|
||||
|
||||
<module name="MethodLength">
|
||||
<property name="max" value="60"/>
|
||||
<property name="countEmpty" value="false"/>
|
||||
|
||||
<!-- ========== Google Style: Indentation ========== -->
|
||||
<!-- Basic offset: 2, continuation indent: 4 (Google style) -->
|
||||
<module name="Indentation">
|
||||
<property name="basicOffset" value="2"/>
|
||||
<property name="braceAdjustment" value="0"/>
|
||||
<property name="caseIndent" value="2"/>
|
||||
<property name="throwsIndent" value="4"/>
|
||||
<property name="arrayInitIndent" value="2"/>
|
||||
<property name="lineWrappingIndentation" value="4"/>
|
||||
<property name="forceStrictCondition" value="false"/>
|
||||
</module>
|
||||
|
||||
<module name="CyclomaticComplexity">
|
||||
<property name="max" value="15"/>
|
||||
<!-- ========== Google Style: Braces ========== -->
|
||||
<!-- Braces required for if/for/while/do (Google style) -->
|
||||
<module name="NeedBraces"/>
|
||||
<!-- Left brace at end of line (Google style) -->
|
||||
<module name="LeftCurly">
|
||||
<property name="option" value="eol"/>
|
||||
</module>
|
||||
<!-- Right brace alone on line (Google style) -->
|
||||
<module name="RightCurly">
|
||||
<property name="option" value="alone"/>
|
||||
</module>
|
||||
|
||||
<module name="ParameterNumber">
|
||||
<property name="max" value="7"/>
|
||||
<!-- ========== Google Style: Whitespace ========== -->
|
||||
<module name="WhitespaceAround">
|
||||
<property name="allowEmptyConstructors" value="true"/>
|
||||
<property name="allowEmptyMethods" value="true"/>
|
||||
<property name="allowEmptyTypes" value="true"/>
|
||||
<property name="allowEmptyLoops" value="true"/>
|
||||
<property name="allowEmptyLambdas" value="true"/>
|
||||
<property name="allowEmptyCatches" value="true"/>
|
||||
</module>
|
||||
|
||||
<module name="NestedIfDepth">
|
||||
<property name="max" value="3"/>
|
||||
<module name="WhitespaceAfter"/>
|
||||
<module name="NoWhitespaceBefore">
|
||||
<property name="tokens" value="COMMA, SEMI, POST_INC, POST_DEC, DOT, METHOD_REF"/>
|
||||
</module>
|
||||
|
||||
<module name="NestedTryDepth">
|
||||
<property name="max" value="2"/>
|
||||
<module name="NoWhitespaceAfter">
|
||||
<property name="tokens"
|
||||
value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS, ARRAY_DECLARATOR"/>
|
||||
</module>
|
||||
<module name="GenericWhitespace"/>
|
||||
<module name="MethodParamPad"/>
|
||||
<module name="ParenPad"/>
|
||||
<module name="TypecastParenPad"/>
|
||||
<module name="NoLineWrap"/>
|
||||
|
||||
|
||||
<module name="AvoidStarImport"/> <module name="UnusedImports"/>
|
||||
<module name="RedundantImport"/>
|
||||
|
||||
|
||||
<!-- ========== Google Style: Naming ========== -->
|
||||
<module name="PackageName">
|
||||
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
|
||||
</module>
|
||||
<module name="TypeName"/>
|
||||
<module name="MethodName"/>
|
||||
<module name="MemberName"/> <module name="ParameterName"/>
|
||||
<module name="MemberName"/>
|
||||
<module name="ParameterName"/>
|
||||
<module name="LocalVariableName"/>
|
||||
<module name="ConstantName"/>
|
||||
|
||||
|
||||
<module name="NeedBraces"/>
|
||||
<module name="LeftCurly"/>
|
||||
<module name="RightCurly"/>
|
||||
|
||||
<module name="WhitespaceAround">
|
||||
<property name="allowEmptyConstructors" value="true"/>
|
||||
<property name="allowEmptyMethods" value="true"/>
|
||||
<module name="CatchParameterName"/>
|
||||
<module name="ClassTypeParameterName"/>
|
||||
<module name="MethodTypeParameterName"/>
|
||||
<module name="InterfaceTypeParameterName"/>
|
||||
<module name="LambdaParameterName"/>
|
||||
<module name="PatternVariableName"/>
|
||||
<module name="RecordComponentName"/>
|
||||
<module name="LocalFinalVariableName"/>
|
||||
<module name="StaticVariableName"/>
|
||||
<module name="AbbreviationAsWordInName">
|
||||
<property name="allowedAbbreviationLength" value="0"/>
|
||||
<property name="ignoreFinal" value="false"/>
|
||||
<property name="allowedAbbreviations" value="IO, URL, HTML, XML, JSON, SQL, API, PM, RP, GUI, ID"/>
|
||||
</module>
|
||||
|
||||
<module name="ModifierOrder"/> <module name="EmptyStatement"/>
|
||||
<module name="EqualsHashCode"/> <module name="SimplifyBooleanExpression"/>
|
||||
|
||||
<!-- ========== Google Style: Imports ========== -->
|
||||
<module name="AvoidStarImport"/>
|
||||
<module name="UnusedImports"/>
|
||||
<module name="RedundantImport"/>
|
||||
<module name="ImportOrder">
|
||||
<property name="groups" value="com,net,org,java,javax"/>
|
||||
<property name="ordered" value="true"/>
|
||||
<property name="separated" value="true"/>
|
||||
<property name="option" value="top"/>
|
||||
<property name="sortStaticImportsAlphabetically" value="true"/>
|
||||
</module>
|
||||
|
||||
<!-- ========== Google Style: Modifiers ========== -->
|
||||
<module name="ModifierOrder"/>
|
||||
<module name="RedundantModifier"/>
|
||||
|
||||
<!-- ========== Code Quality ========== -->
|
||||
<module name="EmptyStatement"/>
|
||||
<module name="EqualsHashCode"/>
|
||||
<module name="SimplifyBooleanExpression"/>
|
||||
<module name="SimplifyBooleanReturn"/>
|
||||
<module name="StringLiteralEquality"/> <module name="DefaultComesLast"/> <module name="MultipleVariableDeclarations"/> <module name="FallThrough"/> <module name="HideUtilityClassConstructor"/>
|
||||
<module name="StringLiteralEquality"/>
|
||||
<module name="DefaultComesLast"/>
|
||||
<module name="MultipleVariableDeclarations"/>
|
||||
<module name="FallThrough"/>
|
||||
<module name="HideUtilityClassConstructor"/>
|
||||
<module name="OneTopLevelClass"/>
|
||||
<module name="OneStatementPerLine"/>
|
||||
<module name="EmptyBlock">
|
||||
<property name="option" value="text"/>
|
||||
</module>
|
||||
<module name="EmptyCatchBlock">
|
||||
<property name="exceptionVariableName" value="expected|ignore"/>
|
||||
</module>
|
||||
<module name="MissingSwitchDefault"/>
|
||||
<module name="UpperEll"/>
|
||||
<module name="ArrayTypeStyle"/>
|
||||
<module name="CommentsIndentation"/>
|
||||
<module name="UnnecessaryParentheses"/>
|
||||
|
||||
<!-- ========== Metrics ========== -->
|
||||
<module name="MethodLength">
|
||||
<property name="max" value="60"/>
|
||||
<property name="countEmpty" value="false"/>
|
||||
</module>
|
||||
<module name="CyclomaticComplexity">
|
||||
<property name="max" value="15"/>
|
||||
</module>
|
||||
<module name="ParameterNumber">
|
||||
<property name="max" value="7"/>
|
||||
</module>
|
||||
<module name="NestedIfDepth">
|
||||
<property name="max" value="3"/>
|
||||
</module>
|
||||
<module name="NestedTryDepth">
|
||||
<property name="max" value="2"/>
|
||||
</module>
|
||||
|
||||
<!-- ========== Google Style: Javadoc ========== -->
|
||||
<module name="JavadocMethod">
|
||||
<property name="accessModifiers" value="public, protected"/>
|
||||
<property name="allowMissingParamTags" value="false"/>
|
||||
<property name="allowMissingReturnTag" value="false"/>
|
||||
<property name="allowedAnnotations" value="Override, Test"/>
|
||||
<property name="tokens" value="METHOD_DEF, CTOR_DEF, ANNOTATION_FIELD_DEF"/>
|
||||
</module>
|
||||
<module name="MissingJavadocMethod">
|
||||
<property name="scope" value="public"/>
|
||||
<property name="minLineCount" value="2"/>
|
||||
<property name="allowedAnnotations" value="Override, Test"/>
|
||||
<property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
|
||||
</module>
|
||||
<module name="MissingJavadocType">
|
||||
<property name="scope" value="public"/>
|
||||
</module>
|
||||
<module name="JavadocType">
|
||||
<property name="scope" value="public"/>
|
||||
</module>
|
||||
<module name="JavadocStyle"/>
|
||||
<module name="NonEmptyAtclause"/>
|
||||
|
||||
</module>
|
||||
</module>
|
||||
</module>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue