|
| 1 | +# Codewars Solutions / Решения с Codewars |
| 2 | + |
| 3 | +[](https://github.com/krotname/Codewars/actions/workflows/maven.yml) |
| 4 | +[](https://github.com/krotname/Codewars/actions/workflows/codeql-analysis.yml) |
| 5 | +[](https://codecov.io/gh/krotname/Codewars) |
| 6 | +[](https://github.com/krotname/Codewars/actions/workflows/maven.yml) |
| 7 | +[](https://github.com/krotname/Codewars/actions/workflows/quality.yml) |
| 8 | +[](LICENSE) |
| 9 | +[](https://adoptium.net/) |
| 10 | +[](https://junit.org/) |
| 11 | +[](https://maven.apache.org/) |
| 12 | + |
| 13 | +This repository is a portfolio-grade Java kata workspace focused on: |
| 14 | +- deterministic algorithms with reproducible tests, |
| 15 | +- explicit quality workflows (CI, CodeQL, coverage, static checks), |
| 16 | +- readable production code and practical refactoring notes, |
| 17 | +- bilingual project documentation. |
| 18 | + |
| 19 | +English | [Русский](#русский) |
| 20 | + |
| 21 | +## English |
| 22 | + |
| 23 | +### Why this repository exists |
| 24 | + |
| 25 | +- It demonstrates practical coding and test engineering from **problem solving** to **delivery quality**. |
| 26 | +- All solutions are intentionally organized by difficulty/source (kyu/LeetCode/interview/transactions/other). |
| 27 | +- Static checks and tests are visible and runnable in one place. |
| 28 | + |
| 29 | +### Repository map |
| 30 | + |
| 31 | +- `src/main/java` — production solutions and domain classes |
| 32 | +- `src/test/java` — tests and quality suites |
| 33 | + - `quality.SmokeSuite` (unit/smoke partition) |
| 34 | + - `quality.IntegrationSuite` (transactions scenario tests) |
| 35 | + - `quality.PropertySuite` (property-based tests, currently curated) |
| 36 | +- `.github` — CI workflows, dependabot and repo templates |
| 37 | +- `ARCHITECTURE.md` — architectural and reviewability notes. |
| 38 | +- `CHANGELOG.md`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, `SECURITY.md`, `TESTING.md` — project governance |
| 39 | + |
| 40 | +### Testing strategy |
| 41 | + |
| 42 | +- **Smoke / Unit baseline** — each kata has direct tests; grouped by `quality.SmokeSuite`. |
| 43 | +- **Integration** — transaction validation state and ordering, via `quality.IntegrationSuite`. |
| 44 | +- **Property-based** — jqwik property tests are grouped in `quality.PropertySuite`. |
| 45 | +- **UI tests** — not applicable (`N/A` for this repository, no UI layer). |
| 46 | +- **Static quality gates** — Checkstyle, PMD, SpotBugs run in Maven verify and fail the build on violations. |
| 47 | +- **Static artifact capture** — reports from Checkstyle/PMD/SpotBugs are attached to CI artifacts for reviewer inspection. |
| 48 | +- **Coverage gate** — JaCoCo fails `mvn verify` below 91% line, 85% branch and 92% instruction coverage. |
| 49 | + |
| 50 | +### CI and quality signals |
| 51 | + |
| 52 | +- GitHub Actions workflow: `.github/workflows/maven.yml` |
| 53 | + - category jobs (`smoke`, `integration`, `property`) on JDK 21 via JUnit tags |
| 54 | + - full `mvn verify` on JDK 17 and 21 |
| 55 | + - uploaded test and coverage artifacts |
| 56 | +- Quality workflow: `.github/workflows/quality.yml` |
| 57 | + - runs static checks with `checkstyle`, `pmd`, and `spotbugs` without executing tests |
| 58 | + - Checkstyle, PMD and SpotBugs are kept clean in the current quality baseline |
| 59 | + - Checkstyle uses a project-specific baseline in `config/checkstyle/checkstyle.xml` |
| 60 | + - Generated smoke wrappers have explicit suppressions in `config/checkstyle/suppressions.xml` |
| 61 | + - SpotBugs is kept clean with documented compatibility exceptions in `config/spotbugs-exclude.xml` |
| 62 | +- Security workflow: `.github/workflows/codeql-analysis.yml` |
| 63 | +- Dependency automation: `.github/dependabot.yml` |
| 64 | +- Coverage tracked in JaCoCo + Codecov; the current local baseline is 455 tests with 91.4% line, |
| 65 | + 85.1% branch and 92.7% instruction coverage. |
| 66 | + |
| 67 | +### Portfolio checklist |
| 68 | + |
| 69 | +- Deterministic implementations with package-localized responsibilities. |
| 70 | +- Clear QA signals in CI (unit/integration/property + static checks). |
| 71 | +- Explicit bilingual documentation for contributors and users. |
| 72 | +- Reproducible Maven build commands. |
| 73 | +- Separate quality workflow for static tooling visibility. |
| 74 | + |
| 75 | +### Local run |
| 76 | + |
| 77 | +```bash |
| 78 | +mvn -B verify |
| 79 | +mvn -B test |
| 80 | +mvn -B test -Dgroups='smoke' |
| 81 | +mvn -B test -Dgroups='integration' |
| 82 | +mvn -B test -Dgroups='property' |
| 83 | +mvn -B -DskipTests checkstyle:check pmd:check spotbugs:check |
| 84 | +mvn -B test -Dtest='quality.SmokeSuite' |
| 85 | +mvn -B test -Dtest='quality.IntegrationSuite' |
| 86 | +mvn -B test -Dtest='quality.PropertySuite' |
| 87 | +``` |
| 88 | + |
| 89 | +### What code reviewers can verify quickly |
| 90 | + |
| 91 | +- No hidden mutation of test inputs inside algorithmic methods. |
| 92 | +- Meaningful method-level comments in non-obvious logic. |
| 93 | +- Deterministic edge-case handling in boundary tests. |
| 94 | +- Governance artifacts for maintainability and process. |
| 95 | + |
| 96 | +### Local quality policy |
| 97 | + |
| 98 | +- Use ASCII-only patch style unless a file already contains another script. |
| 99 | +- Keep public method behavior deterministic. |
| 100 | +- Add/adjust tests for any changed branch behavior. |
| 101 | +- Keep complexity-local comments in algorithmic methods. |
| 102 | + |
| 103 | +### Architecture |
| 104 | + |
| 105 | +- [ARCHITECTURE.md](ARCHITECTURE.md) |
0 commit comments