ModuleCheck
ModuleCheck copied to clipboard
Fast dependency graph validation for Gradle
Currently, the DSL allows for individual rule toggles, but auto-correct behavior is global. And the only rule which has a root-level "ignore" list is `UnusedDependency` with `ignoreUnusedFinding`. Other findings have...
If the target module has a convention plugin, that convention plugin may have its own non-Google `android { ... }` configuration block. example: ```groovy plugins { id `company-convention-plugin` } ourCompany...
I had a lot of false positives when I tried `disableAndroidResources` feature. This happens especially when resources are used across modules. Imagine a module has a String resource that is...
https://docs.gradle.org/7.0-rc-1/userguide/declaring_dependencies.html#sec:type-safe-project-accessors ``` kotlin dependencies { // type-safe alternative to project(":commons:utils:numbers") implementation(projects.commons.utils.numbers) } ```
If a module has some Kotlin file using `@file:JvmName(...)`, then Java classes will consume any top-level declarations using that name. For instance: ```kotlin @file:JvmName("Objects") package com.example ``` The java classes...
For a huge project which has been operating without ModuleCheck, the first run should find hundreds or thousands of issues. It's likely that the maintainers would prefer a gradual adoption...
The current implementation re-parses the build file for every single finding. This is extremely time-consuming on huge projects with lots of findings. Some observations: - "inherited" findings can't really be...
`ModuleCheckTask` as it exists right now violates rules about configuration cache arguments. This basically boils down to passing a Gradle `Project` into the task. The existing `GradleProjectProvider` will need to...
...instead of just doing everything lazily and in-memory. At the end of parsing a module, serialize all the data collected and write it somewhere in `./build` as json or proto....
AndroidManifests can reference Android resources (strings, styles, etc.) and classes like Activities. Currently, any references inside an `AndroidManifest.xml` do not count as dependency references. So for instance, if a `:moduleA`...