microsoft / kafka
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 11,473 units with 99,787 lines of code in units (69.4% of code).
    • 29 very long units (3,867 lines of code)
    • 141 long units (9,545 lines of code)
    • 776 medium size units (23,264 lines of code)
    • 1,604 small units (23,101 lines of code)
    • 8,923 very small units (40,010 lines of code)
3% | 9% | 23% | 23% | 40%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
java3% | 7% | 19% | 22% | 46%
scala4% | 13% | 31% | 24% | 26%
py0% | 34% | 24% | 16% | 24%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
core/src4% | 13% | 31% | 24% | 26%
clients/src1% | 7% | 19% | 22% | 49%
streams/src3% | 3% | 19% | 25% | 48%
connect/runtime5% | 7% | 24% | 23% | 39%
connect/json51% | 20% | 10% | 4% | 13%
connect/api13% | 11% | 9% | 19% | 46%
tools/src4% | 23% | 17% | 18% | 36%
connect/transforms7% | 0% | 23% | 22% | 46%
streams/test-utils0% | 60% | 0% | 16% | 22%
ROOT0% | 34% | 24% | 16% | 24%
connect/file0% | 35% | 11% | 26% | 27%
streams/quickstart0% | 0% | 100% | 0% | 0%
log4j-appender/src0% | 0% | 25% | 8% | 66%
jmh-benchmarks/src0% | 0% | 36% | 19% | 43%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
static
in streams/src/main/java/org/apache/kafka/streams/StreamsConfig.java
214 1 0
def main()
in core/src/main/scala/kafka/tools/SimpleConsumerShell.scala
204 30 1
static
in clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerConfig.java
195 1 0
public Map assign()
in streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamPartitionAssignor.java
191 45 2
public ConnectMetricsRegistry()
in connect/runtime/src/main/java/org/apache/kafka/connect/runtime/ConnectMetricsRegistry.java
180 1 1
protected static Object convertTo()
in connect/api/src/main/java/org/apache/kafka/connect/data/Values.java
179 58 3
public LoginContext login()
in clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosLogin.java
146 26 0
private KafkaConsumer()
in clients/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumer.java
133 7 3
protected static SchemaAndValue parse()
in connect/api/src/main/java/org/apache/kafka/connect/data/Values.java
133 42 2
static
in connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedConfig.java
133 1 0
public void onCompletion()
in connect/runtime/src/main/java/org/apache/kafka/connect/storage/KafkaConfigBackingStore.java
132 31 2
def handleEndTransaction()
in core/src/main/scala/kafka/coordinator/transaction/TransactionCoordinator.scala
129 40 5
def logSegmentBytes = getInt()
in core/src/main/scala/kafka/server/KafkaConfig.scala
127 2 1
override def onComplete()
in core/src/main/scala/kafka/coordinator/transaction/TransactionMarkerRequestCompletionHandler.scala
125 26 1
def main()
in core/src/main/scala/kafka/tools/JmxTool.scala
121 24 1
def appendTransactionToLog()
in core/src/main/scala/kafka/coordinator/transaction/TransactionStateManager.scala
120 23 5
def main()
in core/src/main/scala/kafka/tools/ReplicaVerificationTool.scala
118 10 1
private[group] def loadGroupsAndOffsets()
in core/src/main/scala/kafka/coordinator/group/GroupMetadataManager.scala
114 30 2
static
in connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java
111 16 0
def storeOffsets()
in core/src/main/scala/kafka/coordinator/group/GroupMetadataManager.scala
111 27 8