Skip to content

feat: add KDoc generation for properties, enum constants, and endpoints#32

Open
halotukozak wants to merge 6 commits intomasterfrom
docs/kdoc
Open

feat: add KDoc generation for properties, enum constants, and endpoints#32
halotukozak wants to merge 6 commits intomasterfrom
docs/kdoc

Conversation

@halotukozak
Copy link
Member

Summary

  • Add description field to Endpoint, valueDescriptions to EnumModel
  • Parser extracts operation.description and x-enum-descriptions
  • ModelGenerator adds KDoc to properties with descriptions and per-constant KDoc from valueDescriptions
  • ClientGenerator generates KDoc with summary/description/@param/@return for endpoints
  • Tests verify all KDoc generation scenarios

Test plan

  • Unit tests for property KDoc presence/absence
  • Unit tests for enum constant KDoc from valueDescriptions
  • Unit tests for endpoint KDoc with summary, description, params, return

🤖 Generated with Claude Code

- Add description field to Endpoint, valueDescriptions to EnumModel
- Parser extracts operation.description and x-enum-descriptions
- ModelGenerator adds KDoc to properties and enum constants
- ClientGenerator adds KDoc with summary/description/@param/@return
- Tests verify all KDoc generation scenarios

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings March 25, 2026 12:55
@github-actions
Copy link

Coverage Report

Overall Project 93.86% -0.21% 🍏
Files changed 93.88% 🍏

File Coverage
ClientGenerator.kt 99.59% -0.21% 🍏
ApiSpec.kt 99.29% 🍏
ModelGenerator.kt 95.83% 🍏
SpecParser.kt 89.34% -0.69% 🍏

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds richer documentation support to the OpenAPI-to-Kotlin codegen pipeline by carrying more descriptive metadata through the parsed model and emitting it as KDoc in generated model/client code.

Changes:

  • Extend intermediate model: Endpoint.description and EnumModel.valueDescriptions.
  • Parse operation.description and x-enum-descriptions into the intermediate model.
  • Generate KDoc for schema properties, enum constants, and client endpoint functions; add unit tests for the new KDoc behaviors.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
core/src/main/kotlin/com/avsystem/justworks/core/model/ApiSpec.kt Adds fields to intermediate model to carry endpoint/enum documentation.
core/src/main/kotlin/com/avsystem/justworks/core/parser/SpecParser.kt Extracts endpoint descriptions and enum value descriptions from OpenAPI/extensions.
core/src/main/kotlin/com/avsystem/justworks/core/gen/ModelGenerator.kt Emits property and enum-constant KDoc based on descriptions/valueDescriptions.
core/src/main/kotlin/com/avsystem/justworks/core/gen/ClientGenerator.kt Emits endpoint KDoc including summary/description/params/return.
core/src/test/kotlin/com/avsystem/justworks/core/gen/ModelGeneratorTest.kt Adds tests for property and enum-constant KDoc generation.
core/src/test/kotlin/com/avsystem/justworks/core/gen/ClientGeneratorTest.kt Adds tests for endpoint KDoc generation scenarios.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Update EnumModel to use structured `Value` objects instead of raw strings.
- Adjust ModelGenerator and SpecParser for new `Value` format.
- Refactor related tests to validate `Value` usage and associated descriptions.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 18 to 26
data class Endpoint(
val path: String,
val method: HttpMethod,
val operationId: String,
val summary: String?,
val description: String? = null,
val tags: List<String>,
val parameters: List<Parameter>,
val requestBody: RequestBody?,
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding description to the Endpoint primary constructor changes the public constructor signature and is a binary-breaking change for any downstream code compiled against the previous version. If this module is published/consumed as a library, consider providing a secondary constructor matching the old signature (delegating to the new one) or ensuring the release/versioning strategy accounts for the break.

Copilot uses AI. Check for mistakes.
…ndpoints

- Introduced `sanitizeKdoc()` to clean input before adding to KDoc.
- Updated ModelGenerator and ClientGenerator to apply sanitization.
- Removed unused `simpleTypeName()` helper from Client
- Escapes comment terminators (`*/`, `/*`) to prevent broken Kotlin source generation.
- Ensure key-value consistency when mapping `x-enum-descriptions` extensions.
- Replace invalid map entries with `emptyMap` for
@halotukozak halotukozak self-assigned this Mar 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants