Apache Pig
Conditional Complexity

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 11,738 units with 118,869 lines of code in units (75.9% of code).
    • 11 very complex units (3,050 lines of code)
    • 60 complex units (6,457 lines of code)
    • 411 medium complex units (22,367 lines of code)
    • 857 simple units (23,245 lines of code)
    • 10,399 very simple units (63,750 lines of code)
2% | 5% | 18% | 19% | 53%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
java2% | 5% | 18% | 19% | 53%
Legend:
51+
26-50
11-25
6-10
1-5
Conditional Complexity per Logical Component
primary logical decomposition
src/org/apache/pig/backend4% | 7% | 19% | 19% | 49%
src/org/apache/pig11% | 0% | 8% | 14% | 64%
lib-src/bzip2/org/apache/tools13% | 22% | 28% | 9% | 25%
src/org/apache/pig/data3% | 7% | 21% | 13% | 53%
src/org/apache/pig/scripting5% | 1% | 18% | 14% | 59%
src/org/apache/pig/newplan0% | 8% | 18% | 20% | 52%
contrib/piggybank/java/src/main0% | 3% | 20% | 25% | 50%
src/org/apache/pig/pen0% | 11% | 30% | 19% | 38%
src/org/apache/pig/impl0% | 1% | 21% | 15% | 61%
src/org/apache/pig/builtin0% | 1% | 10% | 23% | 64%
src/org/apache/pig/tools0% | 0% | 18% | 18% | 62%
src/org/apache/pig/parser0% | 0% | 16% | 32% | 50%
tutorial/src/org/apache/pig0% | 0% | 0% | 24% | 75%
src/org/apache/pig/validator0% | 0% | 0% | 35% | 64%
shims/src/hive3/org/apache0% | 0% | 0% | 37% | 62%
lib-src/bzip2/org/apache/pig0% | 0% | 0% | 31% | 68%
shims/src/hive1/org/apache0% | 0% | 0% | 25% | 75%
shims/src/hadoop2/org/apache0% | 0% | 0% | 32% | 67%
src/org/apache/pig/classification0% | 0% | 0% | 0% | 100%
Legend:
51+
26-50
11-25
6-10
1-5
backend logical decomposition
src/org/apache/pig/backend/hadoop4% | 7% | 19% | 19% | 49%
shims/src/hadoop2/org/apache/pig0% | 0% | 0% | 32% | 67%
src/org/apache/pig/backend/executionengine0% | 0% | 0% | 0% | 100%
src/org/apache/pig/backend0% | 0% | 0% | 0% | 100%
src/org/apache/pig/backend/datastorage0% | 0% | 0% | 0% | 100%
Legend:
51+
26-50
11-25
6-10
1-5
Most Complex Units
Top 50 most complex units
Unit# linesMcCabe index# params
private Object convertWithSchema()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
495 138 2
private Job getJob()
in src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/JobControlCompiler.java
427 105 4
private int compareBinInterSedesDatum()
in src/org/apache/pig/data/BinInterSedes.java
253 95 3
public void registerFunctions()
in src/org/apache/pig/scripting/groovy/GroovyScriptEngine.java
192 82 3
static int run()
in src/org/apache/pig/Main.java
405 75 2
private Vertex newVertex()
in src/org/apache/pig/backend/hadoop/executionengine/tez/TezDagBuilder.java
317 68 1
private void sendMTFValues()
in lib-src/bzip2/org/apache/tools/bzip2r/CBZip2OutputStream.java
254 66 0
public PigStats launchPig()
in src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/MapReduceLauncher.java
290 56 3
public void visitTezOp()
in src/org/apache/pig/backend/hadoop/executionengine/tez/plan/optimizer/MultiQueryOptimizerTez.java
187 54 1
protected Result processPlan()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POForEach.java
136 54 0
private int determineBestRegexMethod()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/regex/RegexInit.java
94 53 1
public SecondaryKeyOptimizerInfo applySecondaryKeySort()
in src/org/apache/pig/backend/hadoop/executionengine/util/SecondaryKeyOptimizerUtil.java
206 50 2
public void visitMROp()
in src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/SecondaryKeyOptimizer.java
207 50 1
public Object readDatum()
in src/org/apache/pig/data/BinInterSedes.java
83 50 2
private int compareDefaultTuple()
in src/org/apache/pig/data/DefaultTuple.java
159 49 3
void GenerateMatchingTupleHelper()
in src/org/apache/pig/pen/AugmentBaseDataVisitor.java
151 48 3
public void visit()
in src/org/apache/pig/newplan/logical/relational/LogToPhyTranslationVisitor.java
244 48 1
private static byte getGeneralizedDataType()
in src/org/apache/pig/data/BinInterSedes.java
69 47 1
private void init()
in contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/Over.java
116 46 1
public Result getNextTuple()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POMergeJoin.java
192 45 0
public void visitTezOp()
in src/org/apache/pig/backend/hadoop/executionengine/tez/plan/optimizer/UnionOptimizer.java
161 42 1
public Result getNextTuple()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POLocalRearrange.java
90 42 0
protected boolean instanceOf()
in contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/avro/PigAvroDatumWriter.java
72 40 2
public void visitTezOp()
in src/org/apache/pig/backend/hadoop/executionengine/tez/plan/optimizer/ParallelismSetter.java
105 39 1
public Result getNextInteger()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
109 39 0
public Result getNextLong()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
106 39 0
public Result getNextDouble()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
106 39 0
public Result getNextFloat()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
108 39 0
public Result getNextString()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
108 39 0
public LogicalSchema getSchema()
in src/org/apache/pig/newplan/logical/relational/LOGenerate.java
122 39 0
public Result getNextBigInteger()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
102 37 0
public Result getNextBigDecimal()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
100 37 0
public Result getNextBoolean()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
99 36 0
public void launchPig()
in src/org/apache/pig/pen/LocalMapReduceSimulator.java
153 36 6
public static LogicalFieldSchema merge()
in src/org/apache/pig/newplan/logical/relational/LogicalSchema.java
93 36 3
public Result getNextDateTime()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
96 35 0
private void addCastsToCompareBinaryExp()
in src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java
60 35 2
public Result getNextTuple()
in src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POMergeCogroup.java
85 34 0
public void writeDatum()
in src/org/apache/pig/data/BinInterSedes.java
115 34 3
private void selectComparator()
in src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/JobControlCompiler.java
121 33 3
public void visit()
in src/org/apache/pig/newplan/logical/rules/ColumnPruneVisitor.java
115 33 1
protected static boolean isCompatible()
in contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/avro/PigSchema2Avro.java
37 32 2
private void mainSort()
in lib-src/bzip2/org/apache/tools/bzip2r/CBZip2OutputStream.java
131 32 0
private static Schema resourceFieldSchemaToAvroSchema()
in src/org/apache/pig/impl/util/avro/AvroStorageSchemaConversionUtilities.java
112 32 7
public static boolean castable()
in src/org/apache/pig/impl/logicalLayer/schema/Schema.java
50 32 2
private void addCombiner()
in src/org/apache/pig/backend/hadoop/executionengine/spark/optimizer/CombinerOptimizer.java
130 32 1
public boolean check()
in src/org/apache/pig/newplan/logical/rules/PushUpFilter.java
58 32 1
public boolean check()
in src/org/apache/pig/newplan/logical/rules/PushDownForEachFlatten.java
68 31 1
private void getAndMoveToFrontDecode()
in lib-src/bzip2/org/apache/tools/bzip2r/CBZip2InputStream.java
173 30 0
public static PigNullableWritable getWritableComparableTypes()
in src/org/apache/pig/backend/hadoop/HDataType.java
101 30 2