awslabs / deequ
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 622 units with 6,453 lines of code in units (78.5% of code).
    • 1 very long units (105 lines of code)
    • 8 long units (580 lines of code)
    • 53 medium size units (1,560 lines of code)
    • 142 small units (2,038 lines of code)
    • 418 very small units (2,170 lines of code)
1% | 8% | 24% | 31% | 33%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
scala1% | 9% | 23% | 31% | 33%
java0% | 0% | 97% | 0% | 2%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
deequ/repository15% | 13% | 13% | 36% | 21%
deequ/profiles0% | 40% | 35% | 10% | 14%
deequ/analyzers0% | 4% | 23% | 29% | 42%
deequ/suggestions0% | 9% | 30% | 36% | 23%
deequ/anomalydetection0% | 0% | 54% | 33% | 12%
deequ0% | 0% | 22% | 45% | 31%
deequ/constraints0% | 0% | 19% | 65% | 14%
deequ/schema0% | 0% | 35% | 28% | 36%
deequ/checks0% | 0% | 7% | 16% | 75%
deequ/metrics0% | 0% | 0% | 55% | 44%
deequ/io0% | 0% | 0% | 86% | 13%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
override def serialize()
in src/main/scala/com/amazon/deequ/repository/AnalysisResultSerde.scala
105 27 4
override def deserialize()
in src/main/scala/com/amazon/deequ/repository/AnalysisResultSerde.scala
91 25 3
def toJson()
in src/main/scala/com/amazon/deequ/profiles/ColumnProfile.scala
86 9 1
private[deequ] def profile()
in src/main/scala/com/amazon/deequ/profiles/ColumnProfiler.scala
84 4 12
private[deequ] def doAnalysisRun()
in src/main/scala/com/amazon/deequ/analyzers/runners/AnalysisRunner.scala
77 10 7
private[this] def extractNumericStatistics()
in src/main/scala/com/amazon/deequ/profiles/ColumnProfiler.scala
69 23 1
private[suggestions] def run()
in src/main/scala/com/amazon/deequ/suggestions/ConstraintSuggestionRunner.scala
61 6 7
private[this] def extractGenericStatistics()
in src/main/scala/com/amazon/deequ/profiles/ColumnProfiler.scala
59 16 5
def runOnAggregatedStates()
in src/main/scala/com/amazon/deequ/analyzers/runners/AnalysisRunner.scala
53 5 7
private[this] def runAnalyzersForParticularGrouping()
in src/main/scala/com/amazon/deequ/analyzers/runners/AnalysisRunner.scala
49 9 5
private[this] def createProfiles()
in src/main/scala/com/amazon/deequ/profiles/ColumnProfiler.scala
46 3 4
override def persist[S <: State[_]]()
in src/main/scala/com/amazon/deequ/analyzers/StateProvider.scala
40 16 3
def computeStatsAndAnomalies()
in src/main/scala/com/amazon/deequ/anomalydetection/OnlineNormalStrategy.scala
39 7 3
private[profiles] def run()
in src/main/scala/com/amazon/deequ/profiles/ColumnProfilerRunner.scala
39 3 11
def count()
in src/main/scala/com/amazon/deequ/analyzers/catalyst/StatefulHyperloglogPlus.scala
38 10 1
private[suggestions] def profileAndSuggest()
in src/main/scala/com/amazon/deequ/suggestions/ConstraintSuggestionRunner.scala
38 1 9
private[this] def toCNF()
in src/main/scala/com/amazon/deequ/schema/RowLevelSchemaValidator.scala
38 7 1
public static AttributeReference createSafe()
in src/main/scala/com/amazon/deequ/analyzers/catalyst/AttributeReferenceCreation.java
37 7 1
override def computeMetricFrom()
in src/main/scala/com/amazon/deequ/analyzers/MutualInformation.scala
37 4 1
override def detect()
in src/main/scala/com/amazon/deequ/anomalydetection/seasonal/HoltWinters.scala
37 3 3