android / size-analyzer
Unit Size

The distribution of size of units (measured in lines of code).

Intro
  • Unit size measurements show the distribution of size of units of code (methods, functions...).
  • Units are classified in four categories based on their size (lines of code): 1-20 (small units), 20-50 (medium size units), 51-100 (long units), 101+ (very long units).
  • You should aim at keeping units small (< 20 lines). Long units may become "bloaters", code that have increased to such gargantuan proportions that they are hard to work with.
Learn more...
Unit Size Overall
  • There are 153 units with 1,800 lines of code in units (56.4% of code).
    • 0 very long units (0 lines of code)
    • 4 long units (268 lines of code)
    • 19 medium size units (636 lines of code)
    • 28 small units (382 lines of code)
    • 102 very small units (514 lines of code)
0% | 14% | 35% | 21% | 28%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
java0% | 14% | 35% | 21% | 28%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
java/com/android/tools/sizereduction/analyzer/suggesters/bundles0% | 47% | 11% | 26% | 14%
java/com/android/tools/sizereduction/analyzer/model0% | 15% | 38% | 14% | 31%
java/com/android/tools/sizereduction/analyzer/cli0% | 22% | 28% | 29% | 19%
java/com/android/tools/sizereduction/analyzer/suggesters/binaryfiles0% | 0% | 36% | 21% | 42%
java/com/android/tools/sizereduction/analyzer/suggesters/proguard0% | 0% | 91% | 0% | 8%
java/com/android/tools/sizereduction/analyzer/analyzers0% | 0% | 55% | 23% | 20%
java/com/android/tools/sizereduction/analyzer/suggesters/libraries0% | 0% | 28% | 36% | 35%
java/com/android/tools/sizereduction/analyzer/suggesters0% | 0% | 0% | 0% | 100%
java/com/android/tools/sizereduction/analyzer0% | 0% | 0% | 0% | 100%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
private void checkDslPropertyAssignment()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/model/GroovyGradleParser.java
90 30 5
public ImmutableList processProject()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/suggesters/bundles/BundleSplitSuggester.java
68 8 2
public void displaySuggestions()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/cli/TerminalInterface.java
55 10 0
public ImmutableList processBundle()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/suggesters/bundles/BundleSplitSuggester.java
55 5 3
void applyFixesInteractively()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/cli/TerminalInterface.java
48 11 2
public ImmutableList processProject()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/suggesters/proguard/ProguardSuggester.java
48 6 2
private ImmutableList processFileEntry()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/suggesters/binaryfiles/WebpSuggester.java
47 8 2
private void checkMethodCall()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/model/GroovyGradleParser.java
45 19 3
public ImmutableList processBundle()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/suggesters/proguard/ProguardSuggester.java
42 4 3
private static ImmutableList analyzeDirectory()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/analyzers/ProjectAnalyzer.java
42 10 5
private static Offsets getTextOffsets()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/model/GroovyGradleParser.java
42 12 2
private ImmutableList processFileEntry()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/suggesters/binaryfiles/LargeFilesSuggester.java
37 8 3
public void visitBinaryExpression()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/model/GroovyGradleParser.java
36 8 1
public ImmutableList processBundle()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/suggesters/bundles/UncompressedNativeLibsSuggester.java
30 4 3
private static boolean isOnDemand()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/model/Project.java
30 11 1
private static ImmutableList suggestionsFromLibraryUsages()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/suggesters/libraries/LibraryEligibleForFeatureSplitSuggester.java
29 2 1
public ImmutableList analyze()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/analyzers/BundleAnalyzer.java
27 4 1
public void visitMethodCallExpression()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/model/GroovyGradleParser.java
24 6 1
private static GradleContext createContext()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/model/Project.java
23 7 2
public void visitTupleExpression()
in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/model/GroovyGradleParser.java
23 7 1