microsoft / AdaptiveCards
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 9,589 units with 97,679 lines of code in units (53.2% of code).
    • 26 very long units (4,790 lines of code)
    • 136 long units (9,234 lines of code)
    • 782 medium size units (22,774 lines of code)
    • 1,978 small units (29,154 lines of code)
    • 6,667 very small units (31,727 lines of code)
4% | 9% | 23% | 29% | 32%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
cs18% | 15% | 24% | 19% | 22%
cpp1% | 8% | 24% | 43% | 22%
java4% | 6% | 15% | 10% | 63%
ts5% | 13% | 26% | 21% | 32%
mm16% | 0% | 41% | 31% | 10%
js0% | 17% | 30% | 25% | 27%
h0% | 4% | 24% | 32% | 38%
kt0% | 0% | 46% | 27% | 26%
m0% | 0% | 0% | 0% | 100%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
source/dotnet/Library23% | 14% | 22% | 19% | 20%
source/uwp/Renderer11% | 25% | 34% | 16% | 12%
source/android/adaptivecards1% | 3% | 19% | 38% | 37%
source/nodejs/adaptivecards8% | 13% | 26% | 22% | 28%
source/android/mobile10% | 5% | 32% | 31% | 19%
source/nodejs/ac-typed-schema14% | 15% | 19% | 20% | 29%
source/uwp/Visualizer14% | 0% | 25% | 25% | 34%
source/shared/cpp1% | 12% | 24% | 23% | 38%
source/ios/AdaptiveCards11% | 0% | 35% | 27% | 24%
source/nodejs/adaptivecards-designer-app63% | 0% | 0% | 27% | 8%
source/nodejs/adaptivecards-designer0% | 12% | 26% | 23% | 37%
source/community/reactnative0% | 14% | 33% | 25% | 27%
source/uwp/UWPTestLibrary0% | 37% | 24% | 13% | 23%
source/nodejs/marked-schema0% | 40% | 21% | 19% | 18%
source/android/mobilechatapp0% | 14% | 36% | 18% | 30%
source/uwp/UWPUITests0% | 26% | 31% | 26% | 16%
source/uwp/AdaptiveCardTestApp0% | 16% | 42% | 20% | 20%
source/nodejs/adaptivecards-templating0% | 24% | 23% | 27% | 24%
source/nodejs/adaptivecards-controls0% | 7% | 29% | 8% | 54%
source/nodejs/adaptivecards-aaf-testapp0% | 73% | 23% | 0% | 3%
source/uwp/AdaptiveCardsObjectModel0% | 2% | 14% | 42% | 40%
source/ios/tools0% | 52% | 36% | 10% | 0%
source/uwp/PerfApp0% | 0% | 35% | 19% | 45%
source/nodejs/adaptivecards-ui-testapp0% | 0% | 50% | 25% | 24%
source/nodejs/spec-generator0% | 0% | 29% | 59% | 10%
source/uwp/ObjectModelTest0% | 0% | 100% | 0% | 0%
source/nodejs/adaptivecards-extras0% | 0% | 39% | 38% | 21%
source/uwp/UWPObjectModelTest0% | 0% | 61% | 0% | 38%
source/nodejs/adaptivecards-site0% | 0% | 8% | 40% | 51%
source/uwp/UWPUITestApp0% | 0% | 17% | 9% | 73%
source/android/uitestapp0% | 0% | 0% | 66% | 33%
source/nodejs/adaptivecards-extras-designer0% | 0% | 0% | 0% | 100%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
static EmojiConverter()
in source/dotnet/Library/AdaptiveCards/MarkedNet/EmojiConverter.cs
1282 1 0
private static FrameworkElement RenderMediaPlayer()
in source/dotnet/Library/AdaptiveCards.Rendering.Wpf/AdaptiveMediaRenderer.cs
277 6 3
public View renderFilteredComboBox()
in source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/input/ChoiceSetInputRenderer.java
176 13 5
winrt::UIElement XamlBuilder::BuildImage()
in source/uwp/Renderer/lib/AdaptiveImageRenderer.cpp
176 32 3
private void connectToHost()
in source/android/mobile/src/main/java/io/adaptivecards/adaptivecardssample/RemoteClientConnection.java
171 15 1
private transformType()
in source/nodejs/ac-typed-schema/src/typed-schema.ts
167 28 1
private async internalSendActivityRequestAsync()
in source/nodejs/adaptivecards/src/adaptive-applet.ts
158 24 1
protected internalRender()
in source/nodejs/adaptivecards/src/card-elements.ts
148 37 0
public virtual string Output()
in source/dotnet/Library/AdaptiveCards/MarkedNet/MarkedNet/InlineLexer.cs
147 27 1
protected EditText renderInternal()
in source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/input/TextInputRenderer.java
142 24 11
protected override async void LoadPayload()
in source/uwp/Visualizer/ViewModel/DocumentViewModel.cs
142 16 1
public View renderActions()
in source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/ActionLayoutRenderer.java
135 23 8
void DateTimePreparser::ParseDateTime()
in source/shared/cpp/ObjectModel/DateTimePreparser.cpp
132 19 1
winrt::Size WholeItemsPanel::MeasureOverride()
in source/uwp/Renderer/lib/WholeItemsPanel.cpp
132 18 1
public void renderElementAndPerformFallback()
in source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/registration/CardRendererRegistration.java
129 26 9
winrt::UIElement BuildActionSetHelper()
in source/uwp/Renderer/lib/ActionHelpers.cpp
128 22 5
public View renderComboBox()
in source/android/adaptivecards/src/main/java/io/adaptivecards/renderer/input/ChoiceSetInputRenderer.java
127 10 5
void applyBackgroundImageConstraints()
in source/ios/AdaptiveCards/AdaptiveCards/AdaptiveCards/UtiliOS.mm
122 14 3
void XamlBuilder::SetImageOnUIElement()
in source/uwp/Renderer/lib/AdaptiveImageRenderer.cpp
120 21 8
void TileControl::RefreshContainerTile()
in source/uwp/Renderer/lib/TileControl.cpp
118 22 0