aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgnat Beresnev <ignat@beresnev.me>2021-12-23 14:32:18 +0300
committerGitHub <noreply@github.com>2021-12-23 14:32:18 +0300
commitbfd41ce2a0d43419a671961c19b7d755cffdcfc8 (patch)
tree00d1fcd75ff7c25de20c8b0621e3bfb11cd3f61a
parent5c98d42ec08ca1413f920e4f5dde28d330e8837a (diff)
downloaddokka-bfd41ce2a0d43419a671961c19b7d755cffdcfc8.tar.gz
dokka-bfd41ce2a0d43419a671961c19b7d755cffdcfc8.tar.bz2
dokka-bfd41ce2a0d43419a671961c19b7d755cffdcfc8.zip
Introduce documentedVisibilities setting (#2270)
* Introduce `documentedVisibilities` setting * Remove hardcoded doc generation for Visibility.PUBLIC, correct tests * Add maven, gradle and cli integration tests for documentedVisibilities * Fix maven plugin configuration overriding the default value * Remove test debug prints * Correct an inconsistency with default values and leave a comment of intentions * Add a test for visibility of private setter
-rw-r--r--core/api/core.api36
-rw-r--r--core/src/main/kotlin/DokkaBootstrapImpl.kt7
-rw-r--r--core/src/main/kotlin/configuration.kt36
-rw-r--r--core/src/main/kotlin/defaultConfiguration.kt2
-rw-r--r--core/test-api/api/test-api.api6
-rw-r--r--core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt4
-rw-r--r--docs/src/doc/docs/user_guide/cli/usage.md6
-rw-r--r--docs/src/doc/docs/user_guide/gradle/usage.md34
-rw-r--r--docs/src/doc/docs/user_guide/maven/usage.md23
-rw-r--r--integration-tests/cli/projects/it-cli/src/main/kotlin/it/basic/PublicClass.kt9
-rw-r--r--integration-tests/cli/projects/it-cli/src/main/kotlin/it/internal/InternalClass.kt7
-rw-r--r--integration-tests/cli/projects/it-cli/src/main/kotlin/it/overriddenVisibility/VisiblePrivateClass.kt12
-rw-r--r--integration-tests/cli/projects/it-cli/src/main/kotlin/it/protected/ProtectedClass.kt10
-rw-r--r--integration-tests/cli/src/integrationTest/kotlin/org/jetbrains/dokka/it/cli/CliIntegrationTest.kt54
-rw-r--r--integration-tests/gradle/projects/it-basic/build.gradle.kts10
-rw-r--r--integration-tests/gradle/projects/it-basic/src/main/kotlin/it/basic/PublicClass.kt16
-rw-r--r--integration-tests/gradle/projects/it-basic/src/main/kotlin/it/internal/InternalClass.kt2
-rw-r--r--integration-tests/gradle/projects/it-basic/src/main/kotlin/it/overriddenVisibility/VisiblePrivateClass.kt12
-rw-r--r--integration-tests/gradle/projects/it-basic/src/main/kotlin/it/protected/ProtectedClass.kt10
-rw-r--r--integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/BasicGradleIntegrationTest.kt24
-rw-r--r--integration-tests/maven/projects/it-maven/pom.xml11
-rw-r--r--integration-tests/maven/projects/it-maven/src/main/kotlin/it/basic/PublicClass.kt9
-rw-r--r--integration-tests/maven/projects/it-maven/src/main/kotlin/it/internal/InternalClass.kt7
-rw-r--r--integration-tests/maven/projects/it-maven/src/main/kotlin/it/overriddenVisibility/VisiblePrivateClass.kt12
-rw-r--r--integration-tests/maven/projects/it-maven/src/main/kotlin/it/protected/ProtectedClass.kt10
-rw-r--r--integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/MavenIntegrationTest.kt29
-rw-r--r--integration-tests/src/main/kotlin/org/jetbrains/dokka/it/AbstractIntegrationTest.kt55
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt28
-rw-r--r--plugins/base/src/test/kotlin/content/signatures/ContentForSignaturesTest.kt8
-rw-r--r--plugins/base/src/test/kotlin/filter/DeprecationFilterTest.kt8
-rw-r--r--plugins/base/src/test/kotlin/filter/JavaVisibilityFilterTest.kt195
-rw-r--r--plugins/base/src/test/kotlin/filter/VisibilityFilterTest.kt442
-rw-r--r--plugins/base/src/test/kotlin/model/JavaTest.kt8
-rw-r--r--plugins/base/src/test/kotlin/transformers/ReportUndocumentedTransformerTest.kt6
-rw-r--r--plugins/base/src/test/kotlin/transformers/SuppressedByConfigurationDocumentableFilterTransformerTest.kt2
-rw-r--r--plugins/base/src/test/kotlin/translators/DefaultDescriptorToDocumentableTranslatorTest.kt12
-rw-r--r--runners/cli/api/cli.api7
-rw-r--r--runners/cli/src/main/kotlin/cli/main.kt14
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilder.kt4
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradlePackageOptionsBuilder.kt8
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/toDokkaSourceSetImpl.kt1
-rw-r--r--runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt1
-rw-r--r--runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt1
-rw-r--r--runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilderTest.kt17
-rw-r--r--runners/maven-plugin/api/maven-plugin.api4
-rw-r--r--runners/maven-plugin/src/main/kotlin/DokkaMojo.kt11
46 files changed, 1185 insertions, 45 deletions
diff --git a/core/api/core.api b/core/api/core.api
index 46a4c3a5..471f6314 100644
--- a/core/api/core.api
+++ b/core/api/core.api
@@ -89,6 +89,7 @@ public abstract interface class org/jetbrains/dokka/DokkaConfiguration$DokkaSour
public abstract fun getClasspath ()Ljava/util/List;
public abstract fun getDependentSourceSets ()Ljava/util/Set;
public abstract fun getDisplayName ()Ljava/lang/String;
+ public abstract fun getDocumentedVisibilities ()Ljava/util/Set;
public abstract fun getExternalDocumentationLinks ()Ljava/util/Set;
public abstract fun getIncludeNonPublic ()Z
public abstract fun getIncludes ()Ljava/util/Set;
@@ -117,6 +118,7 @@ public final class org/jetbrains/dokka/DokkaConfiguration$ExternalDocumentationL
}
public abstract interface class org/jetbrains/dokka/DokkaConfiguration$PackageOptions : java/io/Serializable {
+ public abstract fun getDocumentedVisibilities ()Ljava/util/Set;
public abstract fun getIncludeNonPublic ()Z
public abstract fun getMatchingRegex ()Ljava/lang/String;
public abstract fun getReportUndocumented ()Ljava/lang/Boolean;
@@ -143,6 +145,21 @@ public abstract interface class org/jetbrains/dokka/DokkaConfiguration$SourceLin
public abstract fun getRemoteUrl ()Ljava/net/URL;
}
+public final class org/jetbrains/dokka/DokkaConfiguration$Visibility : java/lang/Enum {
+ public static final field Companion Lorg/jetbrains/dokka/DokkaConfiguration$Visibility$Companion;
+ public static final field INTERNAL Lorg/jetbrains/dokka/DokkaConfiguration$Visibility;
+ public static final field PACKAGE Lorg/jetbrains/dokka/DokkaConfiguration$Visibility;
+ public static final field PRIVATE Lorg/jetbrains/dokka/DokkaConfiguration$Visibility;
+ public static final field PROTECTED Lorg/jetbrains/dokka/DokkaConfiguration$Visibility;
+ public static final field PUBLIC Lorg/jetbrains/dokka/DokkaConfiguration$Visibility;
+ public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/dokka/DokkaConfiguration$Visibility;
+ public static fun values ()[Lorg/jetbrains/dokka/DokkaConfiguration$Visibility;
+}
+
+public final class org/jetbrains/dokka/DokkaConfiguration$Visibility$Companion {
+ public final fun fromString (Ljava/lang/String;)Lorg/jetbrains/dokka/DokkaConfiguration$Visibility;
+}
+
public abstract interface class org/jetbrains/dokka/DokkaConfigurationBuilder {
public abstract fun build ()Ljava/lang/Object;
}
@@ -206,6 +223,7 @@ public final class org/jetbrains/dokka/DokkaDefaults {
public static final field suppressObviousFunctions Z
public final fun getAnalysisPlatform ()Lorg/jetbrains/dokka/Platform;
public final fun getCacheRoot ()Ljava/io/File;
+ public final fun getDocumentedVisibilities ()Ljava/util/Set;
public final fun getModuleName ()Ljava/lang/String;
public final fun getModuleVersion ()Ljava/lang/String;
public final fun getOutputDir ()Ljava/io/File;
@@ -254,8 +272,8 @@ public final class org/jetbrains/dokka/DokkaSourceSetID : java/io/Serializable {
}
public final class org/jetbrains/dokka/DokkaSourceSetImpl : org/jetbrains/dokka/DokkaConfiguration$DokkaSourceSet {
- public fun <init> (Ljava/lang/String;Lorg/jetbrains/dokka/DokkaSourceSetID;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;ZZZZILjava/util/Set;Ljava/util/List;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Set;Lorg/jetbrains/dokka/Platform;)V
- public synthetic fun <init> (Ljava/lang/String;Lorg/jetbrains/dokka/DokkaSourceSetID;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;ZZZZILjava/util/Set;Ljava/util/List;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Set;Lorg/jetbrains/dokka/Platform;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+ public fun <init> (Ljava/lang/String;Lorg/jetbrains/dokka/DokkaSourceSetID;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;ZZZZILjava/util/Set;Ljava/util/List;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Set;Lorg/jetbrains/dokka/Platform;Ljava/util/Set;)V
+ public synthetic fun <init> (Ljava/lang/String;Lorg/jetbrains/dokka/DokkaSourceSetID;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;ZZZZILjava/util/Set;Ljava/util/List;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Set;Lorg/jetbrains/dokka/Platform;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component10 ()Z
public final fun component11 ()Z
@@ -270,6 +288,7 @@ public final class org/jetbrains/dokka/DokkaSourceSetImpl : org/jetbrains/dokka/
public final fun component2 ()Lorg/jetbrains/dokka/DokkaSourceSetID;
public final fun component20 ()Ljava/util/Set;
public final fun component21 ()Lorg/jetbrains/dokka/Platform;
+ public final fun component22 ()Ljava/util/Set;
public final fun component3 ()Ljava/util/List;
public final fun component4 ()Ljava/util/Set;
public final fun component5 ()Ljava/util/Set;
@@ -277,14 +296,15 @@ public final class org/jetbrains/dokka/DokkaSourceSetImpl : org/jetbrains/dokka/
public final fun component7 ()Ljava/util/Set;
public final fun component8 ()Z
public final fun component9 ()Z
- public final fun copy (Ljava/lang/String;Lorg/jetbrains/dokka/DokkaSourceSetID;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;ZZZZILjava/util/Set;Ljava/util/List;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Set;Lorg/jetbrains/dokka/Platform;)Lorg/jetbrains/dokka/DokkaSourceSetImpl;
- public static synthetic fun copy$default (Lorg/jetbrains/dokka/DokkaSourceSetImpl;Ljava/lang/String;Lorg/jetbrains/dokka/DokkaSourceSetID;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;ZZZZILjava/util/Set;Ljava/util/List;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Set;Lorg/jetbrains/dokka/Platform;ILjava/lang/Object;)Lorg/jetbrains/dokka/DokkaSourceSetImpl;
+ public final fun copy (Ljava/lang/String;Lorg/jetbrains/dokka/DokkaSourceSetID;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;ZZZZILjava/util/Set;Ljava/util/List;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Set;Lorg/jetbrains/dokka/Platform;Ljava/util/Set;)Lorg/jetbrains/dokka/DokkaSourceSetImpl;
+ public static synthetic fun copy$default (Lorg/jetbrains/dokka/DokkaSourceSetImpl;Ljava/lang/String;Lorg/jetbrains/dokka/DokkaSourceSetID;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;ZZZZILjava/util/Set;Ljava/util/List;Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Set;Lorg/jetbrains/dokka/Platform;Ljava/util/Set;ILjava/lang/Object;)Lorg/jetbrains/dokka/DokkaSourceSetImpl;
public fun equals (Ljava/lang/Object;)Z
public fun getAnalysisPlatform ()Lorg/jetbrains/dokka/Platform;
public fun getApiVersion ()Ljava/lang/String;
public fun getClasspath ()Ljava/util/List;
public fun getDependentSourceSets ()Ljava/util/Set;
public fun getDisplayName ()Ljava/lang/String;
+ public fun getDocumentedVisibilities ()Ljava/util/Set;
public fun getExternalDocumentationLinks ()Ljava/util/Set;
public fun getIncludeNonPublic ()Z
public fun getIncludes ()Ljava/util/Set;
@@ -324,15 +344,17 @@ public final class org/jetbrains/dokka/ExternalDocumentationLinkImpl : org/jetbr
}
public final class org/jetbrains/dokka/PackageOptionsImpl : org/jetbrains/dokka/DokkaConfiguration$PackageOptions {
- public fun <init> (Ljava/lang/String;ZLjava/lang/Boolean;ZZ)V
+ public fun <init> (Ljava/lang/String;ZLjava/lang/Boolean;ZZLjava/util/Set;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Z
public final fun component3 ()Ljava/lang/Boolean;
public final fun component4 ()Z
public final fun component5 ()Z
- public final fun copy (Ljava/lang/String;ZLjava/lang/Boolean;ZZ)Lorg/jetbrains/dokka/PackageOptionsImpl;
- public static synthetic fun copy$default (Lorg/jetbrains/dokka/PackageOptionsImpl;Ljava/lang/String;ZLjava/lang/Boolean;ZZILjava/lang/Object;)Lorg/jetbrains/dokka/PackageOptionsImpl;
+ public final fun component6 ()Ljava/util/Set;
+ public final fun copy (Ljava/lang/String;ZLjava/lang/Boolean;ZZLjava/util/Set;)Lorg/jetbrains/dokka/PackageOptionsImpl;
+ public static synthetic fun copy$default (Lorg/jetbrains/dokka/PackageOptionsImpl;Ljava/lang/String;ZLjava/lang/Boolean;ZZLjava/util/Set;ILjava/lang/Object;)Lorg/jetbrains/dokka/PackageOptionsImpl;
public fun equals (Ljava/lang/Object;)Z
+ public fun getDocumentedVisibilities ()Ljava/util/Set;
public fun getIncludeNonPublic ()Z
public fun getMatchingRegex ()Ljava/lang/String;
public fun getReportUndocumented ()Ljava/lang/Boolean;
diff --git a/core/src/main/kotlin/DokkaBootstrapImpl.kt b/core/src/main/kotlin/DokkaBootstrapImpl.kt
index 67dee9ae..75c4c0af 100644
--- a/core/src/main/kotlin/DokkaBootstrapImpl.kt
+++ b/core/src/main/kotlin/DokkaBootstrapImpl.kt
@@ -23,9 +23,16 @@ fun parsePerPackageOptions(args: List<String>): List<PackageOptions> = args.map
val suppress = options.find { it.endsWith("suppress") }?.startsWith("+")
?: DokkaDefaults.suppress
+ val documentedVisibilities = options
+ .filter { it.matches(Regex("\\+visibility:.+")) } // matches '+visibility:' with at least one symbol after the semicolon
+ .map { DokkaConfiguration.Visibility.fromString(it.split(":")[1]) }
+ .toSet()
+ .ifEmpty { DokkaDefaults.documentedVisibilities }
+
PackageOptionsImpl(
matchingRegex,
includeNonPublic = privateApi,
+ documentedVisibilities = documentedVisibilities,
reportUndocumented = reportUndocumented,
skipDeprecated = !deprecated,
suppress = suppress
diff --git a/core/src/main/kotlin/configuration.kt b/core/src/main/kotlin/configuration.kt
index 56fe8437..46b338d2 100644
--- a/core/src/main/kotlin/configuration.kt
+++ b/core/src/main/kotlin/configuration.kt
@@ -19,6 +19,7 @@ object DokkaDefaults {
const val delayTemplateSubstitution: Boolean = false
const val includeNonPublic: Boolean = false
+ val documentedVisibilities: Set<DokkaConfiguration.Visibility> = setOf(DokkaConfiguration.Visibility.PUBLIC)
const val reportUndocumented: Boolean = false
const val skipEmptyPackages: Boolean = true
const val skipDeprecated: Boolean = false
@@ -122,6 +123,7 @@ interface DokkaConfiguration : Serializable {
val dependentSourceSets: Set<DokkaSourceSetID>
val samples: Set<File>
val includes: Set<File>
+ @Deprecated(message = "Use [documentedVisibilities] property for a more flexible control over documented visibilities")
val includeNonPublic: Boolean
val reportUndocumented: Boolean
val skipEmptyPackages: Boolean
@@ -136,6 +138,38 @@ interface DokkaConfiguration : Serializable {
val noJdkLink: Boolean
val suppressedFiles: Set<File>
val analysisPlatform: Platform
+ val documentedVisibilities: Set<Visibility>
+ }
+
+ enum class Visibility {
+ /**
+ * `public` modifier for Java, default visibility for Kotlin
+ */
+ PUBLIC,
+
+ /**
+ * `private` modifier for both Kotlin and Java
+ */
+ PRIVATE,
+
+ /**
+ * `protected` modifier for both Kotlin and Java
+ */
+ PROTECTED,
+
+ /**
+ * Kotlin-specific `internal` modifier
+ */
+ INTERNAL,
+
+ /**
+ * Java-specific package-private visibility (no modifier)
+ */
+ PACKAGE;
+
+ companion object {
+ fun fromString(value: String) = valueOf(value.toUpperCase())
+ }
}
interface SourceLinkDefinition : Serializable {
@@ -153,10 +187,12 @@ interface DokkaConfiguration : Serializable {
interface PackageOptions : Serializable {
val matchingRegex: String
+ @Deprecated(message = "Use [documentedVisibilities] property for a more flexible control over documented visibilities")
val includeNonPublic: Boolean
val reportUndocumented: Boolean?
val skipDeprecated: Boolean
val suppress: Boolean
+ val documentedVisibilities: Set<Visibility>
}
interface ExternalDocumentationLink : Serializable {
diff --git a/core/src/main/kotlin/defaultConfiguration.kt b/core/src/main/kotlin/defaultConfiguration.kt
index 743cc6c2..4d23ce68 100644
--- a/core/src/main/kotlin/defaultConfiguration.kt
+++ b/core/src/main/kotlin/defaultConfiguration.kt
@@ -50,6 +50,7 @@ data class DokkaSourceSetImpl(
override val noJdkLink: Boolean = DokkaDefaults.noJdkLink,
override val suppressedFiles: Set<File> = emptySet(),
override val analysisPlatform: Platform = DokkaDefaults.analysisPlatform,
+ override val documentedVisibilities: Set<DokkaConfiguration.Visibility> = DokkaDefaults.documentedVisibilities,
) : DokkaSourceSet
data class DokkaModuleDescriptionImpl(
@@ -81,6 +82,7 @@ data class PackageOptionsImpl(
override val reportUndocumented: Boolean?,
override val skipDeprecated: Boolean,
override val suppress: Boolean,
+ override val documentedVisibilities: Set<DokkaConfiguration.Visibility>,
) : DokkaConfiguration.PackageOptions
diff --git a/core/test-api/api/test-api.api b/core/test-api/api/test-api.api
index b1f6a381..83335672 100644
--- a/core/test-api/api/test-api.api
+++ b/core/test-api/api/test-api.api
@@ -83,14 +83,15 @@ public abstract interface annotation class testApi/testRunner/DokkaConfiguration
}
public final class testApi/testRunner/DokkaSourceSetBuilder {
- public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/List;Ljava/util/List;ZZZZILjava/lang/String;Ljava/lang/String;ZZLjava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
- public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/List;Ljava/util/List;ZZZZILjava/lang/String;Ljava/lang/String;ZZLjava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+ public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/List;Ljava/util/List;ZLjava/util/Set;ZZZILjava/lang/String;Ljava/lang/String;ZZLjava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
+ public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/List;Ljava/util/List;ZLjava/util/Set;ZZZILjava/lang/String;Ljava/lang/String;ZZLjava/util/List;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun build ()Lorg/jetbrains/dokka/DokkaSourceSetImpl;
public final fun getAnalysisPlatform ()Ljava/lang/String;
public final fun getApiVersion ()Ljava/lang/String;
public final fun getClasspath ()Ljava/util/List;
public final fun getDependentSourceSets ()Ljava/util/Set;
public final fun getDisplayName ()Ljava/lang/String;
+ public final fun getDocumentedVisibilities ()Ljava/util/Set;
public final fun getExternalDocumentationLinks ()Ljava/util/List;
public final fun getIncludeNonPublic ()Z
public final fun getIncludes ()Ljava/util/List;
@@ -112,6 +113,7 @@ public final class testApi/testRunner/DokkaSourceSetBuilder {
public final fun setClasspath (Ljava/util/List;)V
public final fun setDependentSourceSets (Ljava/util/Set;)V
public final fun setDisplayName (Ljava/lang/String;)V
+ public final fun setDocumentedVisibilities (Ljava/util/Set;)V
public final fun setExternalDocumentationLinks (Ljava/util/List;)V
public final fun setIncludeNonPublic (Z)V
public final fun setIncludes (Ljava/util/List;)V
diff --git a/core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt b/core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt
index 33f45b02..804e02ce 100644
--- a/core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt
+++ b/core/test-api/src/main/kotlin/testApi/testRunner/TestDokkaConfigurationBuilder.kt
@@ -88,7 +88,9 @@ class DokkaSourceSetBuilder(
var dependentSourceSets: Set<DokkaSourceSetID> = emptySet(),
var samples: List<String> = emptyList(),
var includes: List<String> = emptyList(),
+ @Deprecated(message = "Use [documentedVisibilities] property for a more flexible control over documented visibilities")
var includeNonPublic: Boolean = false,
+ var documentedVisibilities: Set<DokkaConfiguration.Visibility> = DokkaDefaults.documentedVisibilities,
var reportUndocumented: Boolean = false,
var skipEmptyPackages: Boolean = false,
var skipDeprecated: Boolean = false,
@@ -112,6 +114,7 @@ class DokkaSourceSetBuilder(
samples = samples.map(::File).toSet(),
includes = includes.map(::File).toSet(),
includeNonPublic = includeNonPublic,
+ documentedVisibilities = documentedVisibilities,
reportUndocumented = reportUndocumented,
skipEmptyPackages = skipEmptyPackages,
skipDeprecated = skipDeprecated,
@@ -137,6 +140,7 @@ val defaultSourceSet = DokkaSourceSetImpl(
samples = emptySet(),
includes = emptySet(),
includeNonPublic = false,
+ documentedVisibilities = DokkaDefaults.documentedVisibilities,
reportUndocumented = false,
skipEmptyPackages = true,
skipDeprecated = false,
diff --git a/docs/src/doc/docs/user_guide/cli/usage.md b/docs/src/doc/docs/user_guide/cli/usage.md
index 9bfcb6fb..eca68c7d 100644
--- a/docs/src/doc/docs/user_guide/cli/usage.md
+++ b/docs/src/doc/docs/user_guide/cli/usage.md
@@ -29,11 +29,12 @@ Dokka supports the following command line arguments:
* `-classpath` - list of directories or .jar files to include in the classpath (used for resolving references) separated by `;`
* `-samples` - list of directories containing sample code (documentation for those directories is not generated but declarations from them can be referenced using the `@sample` tag) separated by `;`
* `-includes` - list of files containing the documentation for the module and individual packages separated by `;`
- * `-includeNonPublic` - include protected and private code
+ * `-includeNonPublic` - **Deprecated**, prefer using `documentedVisibilities`. Include protected and private code
+ * `-documentedVisibilities` - a list of visibility modifiers (separated by `;`) that should be documented. Overrides `includeNonPublic`. Default is `PUBLIC`. Possible values: `PUBLIC`, `PRIVATE`, `PROTECTED`, `INTERNAL` (Kotlin-specific), `PACKAGE` (Java-specific package-private)
* `-skipDeprecated` - if set, deprecated elements are not included in the generated documentation
* `-reportUndocumented` - warn about undocumented members
* `-noSkipEmptyPackages` - create index pages for empty packages
- * `-packageOptions` - list of package options in format `matchingRegex,-deprecated,-privateApi,+reportUndocumented;matchingRegex, ...`, separated by `;`
+ * `-perPackageOptions` - list of package options in format `matchingRegex,-deprecated,-privateApi,+reportUndocumented;+visibility:PRIVATE;matchingRegex, ...`, separated by `;`
* `-links` - list of external documentation links in format `url^packageListUrl^^url2...`, separated by `;`
* `-srcLink` - mapping between a source directory and a Web site for browsing the code in format `<path>=<url>[#lineSuffix]`
* `-noStdlibLink` - disable linking to online kotlin-stdlib documentation
@@ -104,6 +105,7 @@ The content of JSON file ```dokkaConfiguration.json```:
"Module.md"
],
"includeNonPublic": false,
+ "documentedVisibilities": ["PUBLIC", "PRIVATE", "PROTECTED", "INTERNAL", "PACKAGE"],
"reportUndocumented": false,
"skipEmptyPackages": true,
"skipDeprecated": false,
diff --git a/docs/src/doc/docs/user_guide/gradle/usage.md b/docs/src/doc/docs/user_guide/gradle/usage.md
index cc36329d..0b09b430 100644
--- a/docs/src/doc/docs/user_guide/gradle/usage.md
+++ b/docs/src/doc/docs/user_guide/gradle/usage.md
@@ -100,9 +100,21 @@ val dokkaHtml by getting(DokkaTask::class) {
// Used to remove a source set from documentation, test source sets are suppressed by default
suppress.set(false)
- // Use to include or exclude non public members
+ // Deprecated. Prefer using documentedVisibilities.
includeNonPublic.set(false)
+ // A set of visibility modifiers that should be documented
+ // If set by user, overrides includeNonPublic. Default is PUBLIC
+ documentedVisibilities.set(
+ setOf(
+ DokkaConfiguration.Visibility.PUBLIC, // Same for both Kotlin and Java
+ DokkaConfiguration.Visibility.PRIVATE, // Same for both Kotlin and Java
+ DokkaConfiguration.Visibility.PROTECTED, // Same for both Kotlin and Java
+ DokkaConfiguration.Visibility.INTERNAL, // Kotlin-specific internal modifier
+ DokkaConfiguration.Visibility.PACKAGE, // Java-specific package-private visibility
+ )
+ )
+
// Do not output deprecated members. Applies globally, can be overridden by packageOptions
skipDeprecated.set(false)
@@ -173,11 +185,25 @@ val dokkaHtml by getting(DokkaTask::class) {
// Repeat for multiple packageOptions
// If multiple packages match the same matchingRegex, the longuest matchingRegex will be used
perPackageOption {
- matchingRegex.set("kotlin($|\\.).*") // will match kotlin and all sub-packages of it
- // All options are optional, default values are below:
+ // will match kotlin and all sub-packages of it
+ matchingRegex.set("kotlin($|\\.).*")
+
+ // All options are optional
skipDeprecated.set(false)
reportUndocumented.set(true) // Emit warnings about not documented members
- includeNonPublic.set(false)
+ includeNonPublic.set(false) // Deprecated, prefer using documentedVisibilities
+
+ // Visibilities that should be included in the documentation
+ // If set by user, overrides includeNonPublic. Default is PUBLIC
+ documentedVisibilities.set(
+ setOf(
+ DokkaConfiguration.Visibility.PUBLIC, // Same for both Kotlin and Java
+ DokkaConfiguration.Visibility.PRIVATE, // Same for both Kotlin and Java
+ DokkaConfiguration.Visibility.PROTECTED, // Same for both Kotlin and Java
+ DokkaConfiguration.Visibility.INTERNAL, // Kotlin-specific internal modifier
+ DokkaConfiguration.Visibility.PACKAGE, // Java-specific package-private visibility
+ )
+ )
}
// Suppress a package
perPackageOption {
diff --git a/docs/src/doc/docs/user_guide/maven/usage.md b/docs/src/doc/docs/user_guide/maven/usage.md
index 25ccabf0..d799396a 100644
--- a/docs/src/doc/docs/user_guide/maven/usage.md
+++ b/docs/src/doc/docs/user_guide/maven/usage.md
@@ -73,6 +73,16 @@ The available configuration options are shown below:
<include>packages.md</include>
<include>extra.md</include>
</includes>
+
+ <!-- A list of visibility modifiers that should be documented -->
+ <!-- If set by user, overrides includeNonPublic. Default is PUBLIC -->
+ <documentedVisibilities>
+ <visibility>PUBLIC</visibility> <!-- Same for both kotlin and java -->
+ <visibility>PRIVATE</visibility> <!-- Same for both kotlin and java -->
+ <visibility>PROTECTED</visibility> <!-- Same for both kotlin and java -->
+ <visibility>INTERNAL</visibility> <!-- Kotlin-specific internal modifier -->
+ <visibility>PACKAGE</visibility> <!-- Java-specific package-private visibility (default) -->
+ </documentedVisibilities>
<!-- List of sample roots -->
<samples>
@@ -148,9 +158,22 @@ The available configuration options are shown below:
<!-- All options are optional, default values are below: -->
<skipDeprecated>false</skipDeprecated>
+
<!-- Emit warnings about not documented members -->