GerritCodeReview / buck
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 2,850 units with 23,628 lines of code in units (69.2% of code).
    • 5 very long units (552 lines of code)
    • 25 long units (1,559 lines of code)
    • 230 medium size units (6,827 lines of code)
    • 350 small units (5,219 lines of code)
    • 2,240 very small units (9,471 lines of code)
2% | 6% | 28% | 22% | 40%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
java1% | 6% | 28% | 21% | 40%
py13% | 6% | 26% | 35% | 17%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
src/com/facebook/buck/android5% | 6% | 32% | 20% | 34%
src/com/facebook/buck/command21% | 11% | 27% | 16% | 22%
src/com/facebook/buck/cli2% | 9% | 36% | 21% | 30%
src/com/facebook/buck/java0% | 8% | 32% | 20% | 38%
src/com/facebook/buck/parser0% | 13% | 30% | 27% | 28%
src/com/facebook/buck/rules0% | 5% | 23% | 19% | 51%
plugin/src/com/facebook/buck0% | 12% | 16% | 35% | 36%
src/com/facebook/buck/junit0% | 16% | 35% | 21% | 26%
src/com/facebook/buck/shell0% | 7% | 21% | 21% | 49%
src/com/facebook/buck/util0% | 2% | 18% | 23% | 55%
src/com/facebook/buck/parcelable0% | 0% | 54% | 10% | 35%
src/com/facebook/buck/zip0% | 0% | 35% | 26% | 38%
src/com/facebook/buck/dalvik0% | 0% | 44% | 31% | 24%
src/com/facebook/buck/event0% | 0% | 20% | 25% | 54%
src/com/facebook/buck/graph0% | 0% | 36% | 13% | 50%
src/com/facebook/buck/json0% | 0% | 36% | 19% | 44%
src/com/facebook/buck/step0% | 0% | 6% | 24% | 68%
src/com/facebook/buck/python0% | 0% | 16% | 12% | 71%
src/com/facebook/buck/model0% | 0% | 8% | 23% | 68%
src/com/facebook/buck/httpserver0% | 0% | 0% | 23% | 76%
src/com/facebook/buck/timing0% | 0% | 0% | 0% | 100%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
private ResourceDirectoriesFromAapt addAaptPackageSteps()
in src/com/facebook/buck/android/AndroidBinaryRule.java
116 16 3
private int runTests()
in src/com/facebook/buck/cli/TestCommand.java
110 15 5
def write_modules()
in src/com/facebook/buck/command/intellij.py
110 43 1
private Module createModuleForProjectConfig()
in src/com/facebook/buck/command/Project.java
108 19 1
private void addDxAndApkBuilderSteps()
in src/com/facebook/buck/android/AndroidBinaryRule.java
108 7 8
public final ListenableFuture build()
in src/com/facebook/buck/rules/AbstractCachingBuildRule.java
97 12 1
public int runMainWithExitCode()
in src/com/facebook/buck/cli/Main.java
95 10 3
protected DefaultJavaLibraryRule()
in src/com/facebook/buck/java/DefaultJavaLibraryRule.java
76 8 6
static RunListener createSingleTestResultRunListener()
in src/com/facebook/buck/junit/TestResult.java
73 8 1
public final List getBuildSteps()
in src/com/facebook/buck/java/DefaultJavaLibraryRule.java
70 6 2
private void walkRuleAndAdd()
in src/com/facebook/buck/command/Project.java
67 18 4
void addDexingSteps()
in src/com/facebook/buck/android/AndroidBinaryRule.java
66 3 5
public AndroidBinaryRule build()
in src/com/facebook/buck/android/AndroidBinaryRule.java
63 6 1
private void createUIComponents()
in plugin/src/com/facebook/buck/plugin/intellij/ui/BuckTargetsPanel.java
62 7 0
protected void initComponent()
in plugin/src/com/facebook/buck/plugin/intellij/ui/MessageTreeRenderer.java
62 12 7
protected void amendBuilder()
in src/com/facebook/buck/android/AndroidBinaryBuildRuleFactory.java
61 8 2
private void printJsonForTargetsInternal()
in src/com/facebook/buck/cli/TargetsCommand.java
60 11 2
public int execute()
in src/com/facebook/buck/shell/RunShTestAndRecordResultStep.java
59 6 1
List filterDevices()
in src/com/facebook/buck/cli/AdbCommandRunner.java
59 17 3
protected int buildWithClasspath()
in src/com/facebook/buck/java/JavacInMemoryStep.java
58 13 2