microsoft / ai-edu
Conditional Complexity

The distribution of complexity of units (measured with McCabe index).

Intro
  • Conditional complexity (also called cyclomatic complexity) is a term used to measure the complexity of software. The term refers to the number of possible paths through a program function. A higher value ofter means higher maintenance and testing costs (infosecinstitute.com).
  • Conditional complexity is calculated by counting all conditions in the program that can affect the execution path (e.g. if statement, loops, switches, and/or operators, try and catch blocks...).
  • Conditional complexity is measured at the unit level (methods, functions...).
  • Units are classified in four categories based on the measured McCabe index: 1-5 (simple units), 6-10 (medium complex units), 11-25 (complex units), 26+ (very complex units).
Learn more...
Conditional Complexity Overall
  • There are 2,806 units with 25,870 lines of code in units (24.6% of code).
    • 0 very complex units (0 lines of code)
    • 1 complex units (194 lines of code)
    • 47 medium complex units (1,880 lines of code)
    • 150 simple units (3,321 lines of code)
    • 2,608 very simple units (20,475 lines of code)
0% | <1% | 7% | 12% | 79%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
51+
26-50
11-25
6-10
1-5
py0% | <1% | 6% | 13% | 79%
cs0% | 0% | 13% | 11% | 75%
java0% | 0% | 0% | 0% | 100%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
#U5b9e#U8df5#U6848#U4f8b/B09-#U624b#U5199#U7b97#U5f0f#U8ba1#U7b97#U56680% | 17% | 11% | 6% | 64%
#U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U74060% | 0% | 6% | 13% | 80%
#U5b9e#U8df5#U9879#U76ee/2019_MSC_#U9ec4#U91d1#U70b90% | 0% | 30% | 13% | 55%
#U5b9e#U8df5#U6848#U4f8b/B15-#U57fa#U4e8e#U6df1#U5ea6#U5b66#U4e60#U7684#U4ee3#U7801#U641c#U7d22#U6848#U4f8b0% | 0% | 10% | 14% | 74%
#U57fa#U7840#U6559#U7a0b/A1-Python#U4e0e#U57fa#U7840#U77e5#U8bc60% | 0% | 5% | 38% | 56%
#U5b9e#U8df5#U6848#U4f8b/B01-#U6f2b#U753b#U7ffb#U8bd10% | 0% | 0% | 31% | 68%
#U57fa#U7840#U6559#U7a0b/A7-#U5f3a#U5316#U5b66#U4e600% | 0% | 0% | 28% | 71%
#U5b9e#U8df5#U6848#U4f8b/B12-#U57fa#U4e8e#U8fd1#U90bb#U56fe#U7684#U5411#U91cf#U641c#U7d22#U6848#U4f8b0% | 0% | 0% | 38% | 61%
#U57fa#U7840#U6559#U7a0b/A4-#U7ecf#U5178#U673a#U5668#U5b66#U4e60#U7b97#U6cd5#Uff08#U66f4#U65b0#U4e2d#Uff090% | 0% | 0% | 0% | 100%
#U5b9e#U8df5#U6848#U4f8b/B03-#U770b#U56fe#U8bc6#U718a0% | 0% | 0% | 0% | 100%
#U5b9e#U8df5#U6848#U4f8b/B05-#U6587#U672c#U6717#U8bfb#U5e94#U75280% | 0% | 0% | 0% | 100%
#U5b9e#U8df5#U6848#U4f8b/B06-#U642d#U5efa#U4e2d#U95f4#U670d#U52a1#U5c420% | 0% | 0% | 0% | 100%
#U57fa#U7840#U6559#U7a0b/A3-#U795e#U7ecf#U7f51#U7edc#U9ad8#U7ea7#U6a21#U578b#Uff08#U5f81#U7a3f#Uff090% | 0% | 0% | 0% | 100%
#U5b9e#U8df5#U6848#U4f8b/B04-#U667a#U80fd#U5bb6#U5c450% | 0% | 0% | 0% | 100%
#U5b9e#U8df5#U6848#U4f8b/B13-AI#U5bf9#U8054#U751f#U6210#U6848#U4f8b0% | 0% | 0% | 0% | 100%
#U5b9e#U8df5#U6848#U4f8b/B07-#U624b#U5199#U6570#U5b57#U8bc6#U522b0% | 0% | 0% | 0% | 100%
#U5b9e#U8df5#U6848#U4f8b/B02-#U95ee#U7b54#U7cfb#U7edf#U548c#U5bf9#U8bdd#U673a#U5668#U4eba#U670d#U52a10% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
def main()
in #U5b9e#U8df5#U6848#U4f8b/B09-#U624b#U5199#U7b97#U5f0f#U8ba1#U7b97#U5668/src/tensorflow_model/mnist_extension.py
194 28 1
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c7#U6b65 - #U6df1#U5ea6#U795e#U7ecf#U7f51#U7edc/src/ch15-DnnOptimization/MiniFramework/NeuralNet_4_1.py
33 20 4
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c7#U6b65 - #U6df1#U5ea6#U795e#U7ecf#U7f51#U7edc/src/ch16-DnnRegularization/MiniFramework/NeuralNet_4_2.py
37 20 4
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c8#U6b65 - #U5377#U79ef#U795e#U7ecf#U7f51#U7edc/src/ch17-CNNBasic/MiniFramework/NeuralNet_4_2.py
35 20 4
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c8#U6b65 - #U5377#U79ef#U795e#U7ecf#U7f51#U7edc/src/ch18-CNNModel/MiniFramework/NeuralNet_4_2.py
33 20 4
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c9#U6b65 - #U5faa#U73af#U795e#U7ecf#U7f51#U7edc/src/ch19-RNNBasic/MiniFramework/NeuralNet_4_2.py
35 20 4
def main()
in #U5b9e#U8df5#U9879#U76ee/2019_MSC_#U9ec4#U91d1#U70b9/#U5fae#U8f6f#U9ec4#U91d1#U70b9#U7a0b#U5e8f#U5de5#U5177/OnlineGame/BotDemoInPython/RLBotDemo.py
86 19 3
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c7#U6b65 - #U6df1#U5ea6#U795e#U7ecf#U7f51#U7edc/src/ch14-DnnBasic/MiniFramework/NeuralNet_4_0.py
31 18 4
private void writeArea_MouseUp()
in #U5b9e#U8df5#U6848#U4f8b/B09-#U624b#U5199#U7b97#U5f0f#U8ba1#U7b97#U5668/src/extended_mnist_calculator/MNIST.App/MainWindow.cs
124 18 2
def batchnorm_forward()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c7#U6b65 - #U6df1#U5ea6#U795e#U7ecf#U7f51#U7edc/src/ch15-DnnOptimization/Level5_BatchNormTest.py
33 16 4
def Add()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c7#U6b65 - #U6df1#U5ea6#U795e#U7ecf#U7f51#U7edc/src/ch16-DnnRegularization/MiniFramework/TrainingHistory_3_0.py
27 16 8
def Add()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c8#U6b65 - #U5377#U79ef#U795e#U7ecf#U7f51#U7edc/src/ch17-CNNBasic/MiniFramework/TrainingHistory_3_0.py
27 16 8
def Add()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c8#U6b65 - #U5377#U79ef#U795e#U7ecf#U7f51#U7edc/src/ch18-CNNModel/MiniFramework/TrainingHistory_3_0.py
27 16 8
def Add()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c9#U6b65 - #U5faa#U73af#U795e#U7ecf#U7f51#U7edc/src/ch19-RNNBasic/MiniFramework/TrainingHistory_3_0.py
27 16 8
def Add()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c9#U6b65 - #U5faa#U73af#U795e#U7ecf#U7f51#U7edc/src/ch20-RNNModel/MiniFramework/TrainingHistory_3_0.py
27 16 8
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c4#U6b65 - #U975e#U7ebf#U6027#U56de#U5f52/src/ch09-NonLinearRegression/HelperClass2/NeuralNet_2_0.py
27 15 4
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c5#U6b65 - #U975e#U7ebf#U6027#U5206#U7c7b/src/ch10-NonLinearBinaryClassification/HelperClass2/NeuralNet_2_1.py
27 15 4
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c5#U6b65 - #U975e#U7ebf#U6027#U5206#U7c7b/src/ch11-NonLinearMultipleClassification/HelperClass2/NeuralNet_2_2.py
27 15 4
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c5#U6b65 - #U975e#U7ebf#U6027#U5206#U7c7b/src/ch12-MultipleLayerNetwork/HelperClass2/NeuralNet_3_0.py
31 15 4
def train()
in #U57fa#U7840#U6559#U7a0b/A2-#U795e#U7ecf#U7f51#U7edc#U57fa#U672c#U539f#U7406/#U7b2c6#U6b65 - #U6a21#U578b#U90e8#U7f72/src/ch13-ModelInference/HelperClass2/NeuralNet_3_0.py
31 15 4