Chciałem znaleźć nieużywane zależności w moim projekcie. Czy jest do tego funkcja w Gradle, jak w Maven?
Chciałem znaleźć nieużywane zależności w moim projekcie. Czy jest do tego funkcja w Gradle, jak w Maven?
Odpowiedzi:
W czerwcu 2017 wydali
4.0.0 version
i zmienili nazwę głównego projektu"gradle-lint-plugin"
na"nebula-lint-plugin"
. Dodali również obsługę Androida do nieużywanej zależności .
W maju 2016 Gradle zaimplementował wtyczkę Gradle lint do znajdowania i usuwania niechcianych zależności
Wtyczka Gradle Lint to podłączane i konfigurowalne narzędzie linter do identyfikowania i zgłaszania wzorców niewłaściwego użycia lub przestarzałych skryptów Gradle i powiązanych plików.
Ta wtyczka ma różne zasady. Nieużywana reguła zależności jest jedną z nich. Ma trzy szczególne cechy.
Aby zastosować regułę, dodaj:
gradleLint.rules += 'unused-dependency'
Szczegóły dotyczące nieużywanej reguły zależności podano w ostatniej części.
Aby zastosować wtyczkę Gradle lint:
buildscript { repositories { jcenter() } }
plugins {
id 'nebula.lint' version '0.30.2'
}
Alternatywnie:
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
apply plugin: 'nebula.lint'
Zdefiniuj, które reguły chcesz usunąć:
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
W przypadku kompilacji dla przedsiębiorstw zalecamy zdefiniowanie reguł lint w skrypcie init.gradle lub w skrypcie Gradle, który jest dołączony za pośrednictwem mechanizmu Gradle Apply from.
W przypadku projektów wielomodułowych zalecamy stosowanie wtyczki w allprojects
bloku:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
}
Aby zastosować regułę, dodaj:
gradleLint.rules += 'unused-dependency'
Reguła sprawdza skompilowane pliki binarne emanujące z zestawów źródłowych projektu w poszukiwaniu odwołań do klas i dopasowuje te odwołania do zależności zadeklarowanych w bloku zależności .
Dla waszej miłej informacji, chcę podzielić się informacjami o poprzednich wtyczkach
Ale jego najnowsza wersja 1.0.3 jest tworzona 23 grudnia 2014 . Po tym nie ma żadnych aktualizacji.
Uwaga: wielu naszych inżynierów jest zdezorientowanych co do tej wtyczki, ponieważ zaktualizowali tylko numer wersji, nic więcej.
implementation
iapi
), a nawet gorzej, zaleca zmianę z nowymi do starych nieaktualnych (np compile
, testCompile
itp).
Projekt wspomniany we wcześniejszych odpowiedziach wydaje się martwy. Używam analizy zależności-gradle . Konfiguracja jest prosta:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.0.3'
}
}
apply plugin: 'ca.cutterslade.analyze'
Następnie wykonaj:
$ gradle analyzeDependencies
Miałem dużo szczęścia, używając wtyczki Gradle Dependency Analysis . Aby rozpocząć, dodaj następujące dwie rzeczy do skryptu kompilacji Gradle.
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
i
apply plugin: "dependencyAnalysis"
Gdy już są na miejscu, biegnij gradle analyze
. Jeśli istnieją nieużywane zależności, otrzymasz błąd kompilacji, który pokazuje dane wyjściowe podobne do poniższego tekstu, a także listę nieużywanych zależności (zarówno zadeklarowanych, jak i przechodnich). Niepowodzenie kompilacji jest naprawdę przydatne, jeśli chcesz wymusić, że nie powinno być nieużywanych zależności za pośrednictwem kompilacji CI.
:foo:analyze FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':foo:analyze'.
> The project has unused declared artifacts
Właśnie dowiedziałem się o tym: https://plugins.gradle.org/plugin/com.autonomousapps.dependency-analysis
Wygląda na to, że jest aktywnie rozwijany, ale jeszcze go nie testowałem.
Edycja: Właściwie jest całkiem niesamowita, zawiera wiele porad (np. Czy używać interfejsu API czy implementacji)
Uwaga redaktora: ta odpowiedź jest nieaktualna. Zobacz najlepszą odpowiedź .
Możesz wypróbować analizę com.github.nullstress.dependency-analysis Gradle
Utwórz fragment skryptu do użytku we wszystkich wersjach Gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
apply plugin: "com.github.nullstress.dependency-analysis"
Zbuduj fragment skryptu dla nowego mechanizmu inkubacji wtyczek wprowadzonego w Gradle 2.1:
plugins {
id "com.github.nullstress.dependency-analysis" version "1.0.3"
}
Na forum Gradle istnieje również wątek ( Czy istnieje odpowiednik „zależności mvn: analiza”? ) Na ten temat.
Projekty dotyczące większości odpowiedzi historycznych są martwe, ale analiza zależności stopni wydaje się być aktualna od 30.05.2016 .