0Pricing
Kotlin Academy · Leçon

Générer des fichiers source Kotlin avec KotlinPoet

Utilisez KotlinPoet dans un processeur KSP pour générer du code Kotlin sûr du point de vue des types.

Générer des fichiers source Kotlin avec KotlinPoet est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.

Qu’est-ce que KotlinPoet ?

KotlinPoet est l’API Kotlin de Square pour générer par programmation des fichiers sources .kt. Elle produit du code Kotlin bien formaté et idiomatique, et s’intègre naturellement au CodeGenerator de KSP.

Ajouter la dépendance

Ajoutez KotlinPoet à votre module de processeur :

dependencies {
    implementation("com.squareup:kotlinpoet:1.17.0")
    implementation("com.squareup:kotlinpoet-ksp:1.17.0") // KSP extensions
}

FileSpec : la racine d’un fichier généré

FileSpec.builder(packageName, fileName) est le point d’entrée. Ajoutez-y des types, des fonctions et des propriétés, puis écrivez le résultat au moyen du CodeGenerator de KSP :

val file = FileSpec.builder("com.example.generated", "MyFactory")
    .addType( /* TypeSpec here */ )
    .build()

TypeSpec : définir une classe

Utilisez TypeSpec.classBuilder() pour les classes, objectBuilder() pour les objets et interfaceBuilder() pour les interfaces. Enchaînez les appels au générateur pour ajouter des fonctions, des propriétés et des superinterfaces :

val classSpec = TypeSpec.classBuilder("MyFactory")
    .addModifiers(KModifier.PUBLIC)
    .addFunction( /* FunSpec */ )
    .build()

FunSpec : générer une fonction

FunSpec.builder(name) crée une fonction. Utilisez addParameter(), returns() et addStatement() pour construire sa signature et son corps :

val funSpec = FunSpec.builder("create")
    .addParameter("name", String::class)
    .returns(String::class)
    .addStatement("return "Hello, %L!", name")
    .build()

PropertySpec : générer une propriété

Utilisez PropertySpec.builder(name, type) pour générer des propriétés. Indiquez KModifier.PRIVATE, KModifier.OVERRIDE ou utilisez mutable() pour var :

val propSpec = PropertySpec.builder("tag", String::class)
    .initializer("%S", "MyClass")
    .addModifiers(KModifier.PRIVATE)
    .build()

Spécificateurs de format du code

KotlinPoet utilise des spécificateurs de format dans addStatement() et initializer() :

  • %L — valeur littérale (sans guillemets)
  • %S — chaîne littérale (avec guillemets)
  • %T — nom de type (gère automatiquement les importations)
  • %N — nom (d’une spécification ou d’une chaîne)

Importations automatiques avec %T

Lorsque vous utilisez %T avec un ClassName, KotlinPoet ajoute automatiquement l’importation requise. Vous n’avez jamais à écrire les instructions d’importation manuellement :

val listType = ClassName("kotlin.collections", "List")
val funSpec = FunSpec.builder("items")
    .returns(listType.parameterizedBy(String::class.asTypeName()))
    .addStatement("return emptyList()")
    .build()

Écrire dans le CodeGenerator de KSP

Utilisez le pont kotlinpoet-ksp pour écrire le FileSpec généré via le CodeGenerator de KSP, tout en conservant les métadonnées de compilation incrémentielle :

file.writeTo(
    codeGenerator = codeGenerator,
    aggregating = false
)

Générer des fonctions d’extension

Utilisez FunSpec.builder(name).receiver(type) pour générer des fonctions d’extension :

val extFun = FunSpec.builder("toJson")
    .receiver(ClassName("com.example", "User"))
    .returns(String::class)
    .addStatement("return Gson().toJson(this)")
    .build()

Cas pratique : générateur de fabriques

Un processeur KSP annote les classes de données avec @AutoFactory et utilise KotlinPoet pour générer un objet fabrique compagnon pour chacune d’elles. Le fichier généré est placé dans le même paquetage que la classe d’origine.

Tester le code généré

Utilisez FileSpec.toString() de KotlinPoet dans les tests unitaires pour vérifier le texte source généré sans l’écrire sur le disque. La bibliothèque kotlin-compile-testing-ksp peut compiler et exécuter le code généré dans les tests.

Vérification rapide

Dans KotlinPoet, quel spécificateur de format ajoute automatiquement l’importation nécessaire pour une classe référencée ?

Récapitulatif : générer des fichiers sources Kotlin avec KotlinPoet

Points essentiels :

  • FileSpec → fichier de premier niveau ; TypeSpec → classe/objet/interface ; FunSpec → fonction ; PropertySpec → propriété
  • Utilisez %T pour les références de types — les importations sont automatiques
  • Écrivez au moyen de file.writeTo(codeGenerator) dans les processeurs KSP
  • Utilisez FileSpec.toString() pour tester unitairement la sortie générée

Questions Fréquemment Posées

La leçon « Générer des fichiers source Kotlin avec KotlinPoet » est-elle gratuite ?

Oui — le texte complet de « Générer des fichiers source Kotlin avec KotlinPoet » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Générer des fichiers source Kotlin avec KotlinPoet » ?

Utilisez KotlinPoet dans un processeur KSP pour générer du code Kotlin sûr du point de vue des types. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Kotlin Academy ?

Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Générer des fichiers source Kotlin avec KotlinPoet » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?

Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. KSP ou KAPT : pourquoi KSP est plus rapide
  2. Écrire votre premier SymbolProcessor
  3. Générer des fichiers source Kotlin avec KotlinPoet
  4. Intégrer des processeurs KSP dans une compilation Gradle
← Retour à Kotlin Academy