bazelbuild / bazel
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 31,620 units with 305,072 lines of code in units (62.1% of code).
    • 168 very long units (27,181 lines of code)
    • 535 long units (35,982 lines of code)
    • 2,549 medium size units (77,610 lines of code)
    • 4,112 small units (59,687 lines of code)
    • 24,256 very small units (104,612 lines of code)
8% | 11% | 25% | 19% | 34%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
java8% | 11% | 24% | 19% | 35%
cc15% | 12% | 36% | 19% | 17%
py4% | 14% | 25% | 31% | 24%
h0% | 7% | 14% | 18% | 58%
inc0% | 55% | 23% | 13% | 7%
m0% | 0% | 74% | 25% | 0%
c0% | 0% | 48% | 48% | 2%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
src/main9% | 11% | 25% | 18% | 34%
src/tools5% | 13% | 26% | 22% | 32%
src/java_tools1% | 6% | 21% | 25% | 44%
tools/j2objc28% | 0% | 46% | 22% | 2%
tools/android0% | 19% | 18% | 32% | 29%
tools/build_defs0% | 35% | 39% | 11% | 13%
tools/osx0% | 17% | 48% | 21% | 13%
tools/objc0% | 20% | 27% | 38% | 13%
tools/java0% | 0% | 25% | 38% | 35%
tools/aquery_differ0% | 0% | 46% | 22% | 31%
tools/jdk0% | 0% | 42% | 41% | 15%
tools/cpp0% | 0% | 43% | 18% | 38%
tools/python0% | 0% | 23% | 24% | 51%
scripts0% | 0% | 16% | 31% | 51%
src0% | 0% | 25% | 55% | 18%
tools/ctexplain0% | 0% | 0% | 67% | 32%
ROOT0% | 0% | 0% | 100% | 0%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
public static ImmutableList getLegacyFeatures()
in src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java
947 39 5
public CppLinkAction build()
in src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
400 60 0
public ConfiguredTarget create()
in src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
390 41 1
public static void init()
in src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
359 54 3
public static ImmutableList getLegacyActionConfigs()
in src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java
358 19 6
public static RuleConfiguredTargetBuilder createAndroidBinary()
in src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
350 36 17
public void beforeCommand()
in src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java
344 47 1
public static void init()
in src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
341 42 9
public BlazeCommandResult exec()
in src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
292 49 2
private BlazeCommandResult execExclusively()
in src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
286 47 10
Object provider()
in src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java
281 1 4
public ConfiguredTarget create()
in src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
265 14 1
public AnalysisResult update()
in src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
264 27 16
int CreateJunction()
in src/main/native/windows/file.cc
246 45 3
public void visitInsn()
in src/tools/android/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java
245 108 1
public void run()
in src/main/java/com/google/devtools/build/skyframe/AbstractParallelEvaluator.java
244 30 0
Tuple compile()
in src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/BazelCcModuleApi.java
241 1 36
static Object binaryOp()
in src/main/java/net/starlark/java/eval/EvalUtils.java
231 93 4
protected Tuple compile()
in src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
228 20 37
public LibraryToLink createLibraryLinkerInput()
in src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
222 44 14