chore: cleanup configs, docs, checkstyle, remove dead deps

This commit is contained in:
loki5512344 2026-07-05 11:38:04 +02:00
parent 984b364295
commit d3d87c34e0
23 changed files with 1703 additions and 2231 deletions

View file

@ -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

View file

@ -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>