Skip to content

Instantly share code, notes, and snippets.

@eriwen
Last active February 21, 2024 12:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eriwen/ccf04b44cb9b0cb28193a8bc9aec01d9 to your computer and use it in GitHub Desktop.
Save eriwen/ccf04b44cb9b0cb28193a8bc9aec01d9 to your computer and use it in GitHub Desktop.
Get most frequent usage of Gradle Internal APIs from BigQuery GitHub Data
SELECT
class,
COUNT(*) count
FROM (
SELECT
REGEXP_REPLACE(line, r'import |;', '') AS class,
c.id
FROM (
SELECT
SPLIT(c.content, '\n') line,
c.id
FROM
[gradle.gradle_imports] c
JOIN
[bigquery-public-data:github_repos.files] f
ON
c.id = f.id
WHERE
f.path LIKE '%.java'
OR f.path LIKE '%.groovy'
OR f.path LIKE '%.gradle'
HAVING
LEFT(line, 17)='import org.gradle' )
GROUP BY
class,
c.id )
WHERE
NOT REGEXP_MATCH(class, r'org.gradle.(api|authentication|buildinit|caching|external|javadoc|ide|ivy|jvm|language|maven|nativeplatform|platform|play|plugin.devel|plugin.repository|plugin.use|plugins|process|testfixtures|testing.jacoco|tooling|model|testkit|testing).')
OR class CONTAINS '.internal'
GROUP BY
1
ORDER BY
count DESC
LIMIT
1000;
-- Save to gradle_imports table
SELECT
id,
content
FROM
[bigquery-public-data:github_repos.contents]
WHERE
content CONTAINS 'import org.gradle'
-- This is why BigQuery is awesome —> Query complete (21.0s elapsed, 1.94 TB processed)
class count
org.gradle.internal.reflect.Instantiator 1103
org.gradle.api.internal.file.FileResolver 868
org.gradle.internal.Factory 807
org.gradle.api.internal.project.ProjectInternal 707
org.gradle.util.GradleVersion 680
org.gradle.internal.os.OperatingSystem 680
org.gradle.integtests.fixtures.AbstractIntegrationSpec 657
org.gradle.test.fixtures.file.TestFile 649
org.gradle.util.ConfigureUtil 608
org.gradle.test.fixtures.file.TestNameTestDirectoryProvider 550
org.gradle.internal.service.ServiceRegistry 546
org.gradle.internal.UncheckedException 538
org.gradle.util.CollectionUtils 537
org.gradle.model.internal.type.ModelType 505
org.gradle.util.GUtil 469
org.gradle.internal.jvm.Jvm 387
org.gradle.StartParameter 378
org.gradle.util.GFileUtils 329
org.gradle.language.base.internal.compile.Compiler 302
org.gradle.model.internal.core.rule.describe.ModelRuleDescriptor 295
org.gradle.api.internal.TaskInternal 273
org.gradle.internal.classpath.ClassPath 266
org.gradle.api.internal.GradleInternal 266
org.gradle.util.TestUtil 258
org.gradle.util.Requires 250
org.gradle.internal.Cast 233
org.gradle.util.TestPrecondition 231
org.gradle.internal.concurrent.ExecutorFactory 228
org.gradle.internal.HasInternalProtocol 220
org.gradle.internal.SystemProperties 211
org.gradle.api.internal.initialization.ClassLoaderScope 211
org.gradle.internal.reflect.DirectInstantiator 200
org.gradle.util.TextUtil 200
org.gradle.groovy.scripts.ScriptSource 197
org.gradle.api.internal.ConventionTask 195
org.gradle.util.VersionNumber 190
org.gradle.internal.concurrent.CompositeStoppable 189
org.gradle.logging.ProgressLoggerFactory 183
org.gradle.internal.concurrent.Stoppable 179
org.gradle.internal.service.ServiceRegistration 176
org.gradle.initialization.BuildCancellationToken 167
org.gradle.integtests.tooling.fixture.ToolingApiSpecification 166
org.gradle.internal.typeconversion.NotationParser 165
org.gradle.logging.LoggingManagerInternal 164
org.gradle.internal.classpath.DefaultClassPath 160
org.gradle.api.internal.tasks.SimpleWorkResult 160
org.gradle.internal.Actions 160
org.gradle.logging.StyledTextOutput 159
org.gradle.cache.CacheRepository 153
org.gradle.api.internal.file.collections.SimpleFileCollection 152
org.gradle.api.internal.component.ArtifactType 150
org.gradle.model.internal.core.ModelPath 149
org.gradle.tooling.internal.consumer.parameters.ConsumerOperationParameters 148
org.gradle.model.internal.registry.ModelRegistry 147
org.gradle.process.internal.ExecActionFactory 147
org.gradle.api.internal.DefaultDomainObjectSet 142
org.gradle.api.internal.ClosureBackedAction 141
org.gradle.api.internal.artifacts.DefaultModuleVersionIdentifier 140
org.gradle.internal.service.DefaultServiceRegistry 138
org.gradle.test.fixtures.file.TestDirectoryProvider 133
org.gradle.api.internal.plugins.DslObject 133
org.gradle.internal.component.model.IvyArtifactName 131
org.gradle.internal.serialize.Serializer 131
org.gradle.integtests.tooling.fixture.TargetGradleVersion 131
org.gradle.util.DeprecationLogger 128
org.gradle.launcher.daemon.context.DaemonContext 128
org.gradle.model.internal.core.* 128
org.gradle.internal.serialize.Decoder 127
org.gradle.BuildResult 127
org.gradle.util.TreeVisitor 125
org.gradle.internal.nativeintegration.filesystem.FileSystem 125
org.gradle.tooling.internal.adapter.ProtocolToModelAdapter 123
org.gradle.internal.operations.BuildOperationExecutor 122
org.gradle.internal.id.IdGenerator 119
org.gradle.internal.Transformers 116
org.gradle.model.internal.manage.schema.ModelSchemaStore 116
org.gradle.api.internal.tasks.options.Option 116
org.gradle.api.internal.project.IsolatedAntBuilder 114
org.gradle.internal.serialize.Encoder 113
org.gradle.api.internal.file.TemporaryFileProvider 112
org.gradle.api.internal.file.DefaultSourceDirectorySet 110
org.gradle.api.internal.file.FileOperations 109
org.gradle.internal.event.ListenerManager 109
org.gradle.api.internal.file.TestFiles 108
org.gradle.internal.resolve.ModuleVersionResolveException 108
org.gradle.api.internal.DocumentationRegistry 108
org.gradle.cache.PersistentIndexedCache 107
org.gradle.internal.hash.HashUtil 106
org.gradle.internal.reflect.JavaReflectionUtil 105
org.gradle.test.fixtures.AbstractProjectBuilderSpec 102
org.gradle.internal.nativeintegration.services.NativeServices 102
org.gradle.logging.StyledTextOutputFactory 102
org.gradle.integtests.fixtures.TestResources 101
org.gradle.api.internal.ConventionMapping 100
org.gradle.util.WrapUtil 100
org.gradle.logging.ProgressLogger 99
org.gradle.api.internal.project.taskfactory.ITaskFactory 99
org.gradle.cache.PersistentCache 99
org.gradle.model.internal.core.ModelReference 98
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment