Collect metric values on elements

Property definitions

nitc $ Metric :: collect
	# Collect metric values on elements
	fun collect(elements: Collection[ELM]) is abstract
src/metrics/metrics_base.nit:171,2--172,51

nitc $ MNOA :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			values[mmodule] = mmodule.in_importation.greaters.length - 1
		end
	end
src/metrics/mmodules_metrics.nit:104,2--108,4

nitc $ MNOP :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			values[mmodule] = mmodule.in_importation.direct_greaters.length
		end
	end
src/metrics/mmodules_metrics.nit:118,2--122,4

nitc $ MNOC :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			values[mmodule] = mmodule.in_importation.direct_smallers.length
		end
	end
src/metrics/mmodules_metrics.nit:132,2--136,4

nitc $ MNOD :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			values[mmodule] = mmodule.in_importation.smallers.length - 1
		end
	end
src/metrics/mmodules_metrics.nit:146,2--150,4

nitc $ MDIT :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			values[mmodule] = mmodule.in_importation.depth
		end
	end
src/metrics/mmodules_metrics.nit:160,2--164,4

nitc $ MNBD :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			values[mmodule] = 0
			for a in mmodule.collect_ancestors(mainmodule, filter) do
				values[mmodule] += a.intro_mclasses.length
			end
		end
	end
src/metrics/mmodules_metrics.nit:176,2--183,4

nitc $ MNBI :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			values[mmodule] = mmodule.intro_mclasses.length
		end
	end
src/metrics/mmodules_metrics.nit:195,2--199,4

nitc $ MNBR :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var value = 0
			for mclassdef in mmodule.mclassdefs do
				if not mclassdef.is_intro then value += 1
			end
			values[mmodule] = value
		end
	end
src/metrics/mmodules_metrics.nit:211,2--219,4

nitc $ MNBCC :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var value = 0
			for mclassdef in mmodule.mclassdefs do
				if mclassdef.mclass.kind == concrete_kind then value += 1
			end
			values[mmodule] = value
		end
	end
src/metrics/mmodules_metrics.nit:229,2--237,4

nitc $ MNBAC :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var value = 0
			for mclassdef in mmodule.mclassdefs do
				if mclassdef.mclass.kind == abstract_kind then value += 1
			end
			values[mmodule] = value
		end
	end
src/metrics/mmodules_metrics.nit:247,2--255,4

nitc $ MNBIC :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var value = 0
			for mclassdef in mmodule.mclassdefs do
				if mclassdef.mclass.kind == interface_kind then value += 1
			end
			values[mmodule] = value
		end
	end
src/metrics/mmodules_metrics.nit:265,2--273,4

nitc $ MNBEC :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var value = 0
			for mclassdef in mmodule.mclassdefs do
				if mclassdef.mclass.kind == enum_kind then value += 1
			end
			values[mmodule] = value
		end
	end
src/metrics/mmodules_metrics.nit:283,2--291,4

nitc $ CNOA :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.in_hierarchy(mainmodule).greaters.length - 1
		end
	end
src/metrics/mclasses_metrics.nit:112,2--116,4

nitc $ CNOP :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.in_hierarchy(mainmodule).direct_greaters.length
		end
	end
src/metrics/mclasses_metrics.nit:126,2--130,4

nitc $ CNOC :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.in_hierarchy(mainmodule).direct_smallers.length
		end
	end
src/metrics/mclasses_metrics.nit:140,2--144,4

nitc $ CNOD :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.in_hierarchy(mainmodule).smallers.length - 1
		end
	end
src/metrics/mclasses_metrics.nit:154,2--158,4

nitc $ CDIT :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.in_hierarchy(mainmodule).depth
		end
	end
src/metrics/mclasses_metrics.nit:168,2--172,4

nitc $ CNBP :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.collect_accessible_mproperties(mainmodule, filter).length
		end
	end
src/metrics/mclasses_metrics.nit:182,2--186,4

nitc $ CNBA :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.collect_accessible_mattributes(mainmodule, filter).length
		end
	end
src/metrics/mclasses_metrics.nit:196,2--200,4

nitc $ CNBM :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.collect_accessible_mmethods(mainmodule, filter).length
		end
	end
src/metrics/mclasses_metrics.nit:210,2--214,4

nitc $ CNBI :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.collect_accessible_inits(mainmodule, filter).length
		end
	end
src/metrics/mclasses_metrics.nit:224,2--228,4

nitc $ CNBV :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.collect_accessible_vts(mainmodule, filter).length
		end
	end
src/metrics/mclasses_metrics.nit:238,2--242,4

nitc $ CNBIP :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.collect_intro_mproperties(filter).length
		end
	end
src/metrics/mclasses_metrics.nit:252,2--256,4

nitc $ CNBRP :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.collect_redef_mproperties(filter).length
		end
	end
src/metrics/mclasses_metrics.nit:266,2--270,4

nitc $ CNBHP :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.collect_inherited_mproperties(mainmodule, filter).length
		end
	end
src/metrics/mclasses_metrics.nit:280,2--284,4

nitc $ CNBLP :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.collect_local_mproperties(filter).length
		end
	end
src/metrics/mclasses_metrics.nit:294,2--298,4

nitc $ CBMS :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var totc = mclass.collect_accessible_mproperties(mainmodule, filter).length
			var ditc = mclass.in_hierarchy(mainmodule).depth
			values[mclass] = totc.to_f / (ditc + 1).to_f
		end
	end
src/metrics/mendel_metrics.nit:140,2--146,4

nitc $ MBMS :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var totc = mmodule.collect_intro_mclassdefs(filter).length
			totc += mmodule.collect_redef_mclassdefs(filter).length
			var ditc = mmodule.in_importation.depth
			values[mmodule] = totc.to_f / (ditc + 1).to_f
		end
	end
src/metrics/mendel_metrics.nit:157,2--164,4

nitc $ CNVI :: collect
	redef fun collect(mclasses) do
		var cbms = new CBMS(model, mainmodule, filter)
		for mclass in mclasses do
			# compute branch mean size
			var parents = mclass.in_hierarchy(mainmodule).direct_greaters
			if parents.length > 0 then
				cbms.clear
				cbms.collect(new HashSet[MClass].from(parents))
				# compute class novelty index
				var locc = mclass.collect_accessible_mproperties(mainmodule, filter).length
				values[mclass] = locc.to_f / cbms.avg
			else
				values[mclass] = 0.0
			end
		end
	end
src/metrics/mendel_metrics.nit:175,2--190,4

nitc $ MNVI :: collect
	redef fun collect(mmodules) do
		var mbms = new MBMS(model, mainmodule, filter)
		for mmodule in mmodules do
			# compute branch mean size
			var parents = mmodule.in_importation.direct_greaters
			if parents.length > 0 then
				mbms.clear
				mbms.collect(new HashSet[MModule].from(parents))
				# compute module novelty index
				var locc = mmodule.collect_intro_mclassdefs(filter).length
				locc += mmodule.collect_redef_mclassdefs(filter).length
				values[mmodule] = locc.to_f / mbms.avg
			else
				values[mmodule] = 0.0
			end
		end
	end
src/metrics/mendel_metrics.nit:201,2--217,4

nitc $ CNVS :: collect
	redef fun collect(mclasses) do
		var cnvi = new CNVI(model, mainmodule, filter)
		cnvi.collect(mclasses)
		for mclass in mclasses do
			var locc = mclass.collect_local_mproperties(filter).length
			values[mclass] = cnvi.values[mclass] * locc.to_f
		end
	end
src/metrics/mendel_metrics.nit:228,2--235,4

nitc $ MNVS :: collect
	redef fun collect(mmodules) do
		var mnvi = new MNVI(model, mainmodule, filter)
		mnvi.collect(mmodules)
		for mmodule in mmodules do
			var locc = mmodule.collect_intro_mclassdefs(filter).length
			locc += mmodule.collect_redef_mclassdefs(filter).length
			values[mmodule] = mnvi.values[mmodule] * locc.to_f
		end
	end
src/metrics/mendel_metrics.nit:246,2--254,4

nitc $ MDUI :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var count = 0
			for mclass in mmodule.intro_mclasses do
				if mclass.in_hierarchy(mainmodule).greaters.length > 2 then count += 1
			end
			if mmodule.intro_mclasses.is_empty then
				values[mmodule] = 0.0
			else
				values[mmodule] = count.to_f / mmodule.intro_mclasses.length.to_f
			end
		end
	end
src/metrics/inheritance_metrics.nit:115,2--127,4

nitc $ MDUIC :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var count = 0
			var nb = 0
			for mclass in mmodule.intro_mclasses do
				if mclass.kind == abstract_kind or mclass.kind == concrete_kind or mclass.kind == extern_kind then
					if mclass.in_hierarchy(mainmodule).greaters.length > 2 then count += 1
				end
				nb += 1
			end
			if mmodule.intro_mclasses.is_empty then
				values[mmodule] = 0.0
			else
				values[mmodule] = count.to_f / nb.to_f
			end
		end
	end
src/metrics/inheritance_metrics.nit:139,2--155,4

nitc $ MDUII :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var count = 0
			var nb = 0
			for mclass in mmodule.intro_mclasses do
				if mclass.kind == interface_kind then
					if mclass.in_hierarchy(mainmodule).greaters.length > 2 then count += 1
				end
				nb += 1
			end
			if mmodule.intro_mclasses.is_empty then
				values[mmodule] = 0.0
			else
				values[mmodule] = count.to_f / nb.to_f
			end
		end
	end
src/metrics/inheritance_metrics.nit:167,2--183,4

nitc $ MIF :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var count = 0
			for mclass in mmodule.intro_mclasses do
				if mclass.in_hierarchy(mainmodule).direct_smallers.length > 0 then count += 1
			end
			if mmodule.intro_mclasses.is_empty then
				values[mmodule] = 0.0
			else
				values[mmodule] = count.to_f / mmodule.intro_mclasses.length.to_f
			end
		end
	end
src/metrics/inheritance_metrics.nit:195,2--207,4

nitc $ MIFC :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var count = 0
			var nb = 0
			for mclass in mmodule.intro_mclasses do
				if mclass.kind == abstract_kind or mclass.kind == concrete_kind or mclass.kind == extern_kind then
					if mclass.in_hierarchy(mainmodule).direct_smallers.length > 0 then count += 1
				end
				nb += 1
			end
			if mmodule.intro_mclasses.is_empty then
				values[mmodule] = 0.0
			else
				values[mmodule] = count.to_f / nb.to_f
			end
		end
	end
src/metrics/inheritance_metrics.nit:219,2--235,4

nitc $ MIFI :: collect
	redef fun collect(mmodules) do
		for mmodule in mmodules do
			var count = 0
			var nb = 0
			for mclass in mmodule.intro_mclasses do
				if mclass.kind == interface_kind then
					if mclass.in_hierarchy(mainmodule).direct_smallers.length > 0 then count += 1
				end
				nb += 1
			end
			if mmodule.intro_mclasses.is_empty then
				values[mmodule] = 0.0
			else
				values[mmodule] = count.to_f / nb.to_f
			end
		end
	end
src/metrics/inheritance_metrics.nit:247,2--263,4

nitc $ CNOAC :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var count = 0
			for parent in mclass.in_hierarchy(mainmodule).greaters do
				if parent == mclass then continue
				if parent.kind == abstract_kind or parent.kind == concrete_kind or parent.kind == extern_kind then
					count += 1
				end
			end
			values[mclass] = count
		end
	end
src/metrics/inheritance_metrics.nit:275,2--286,4

nitc $ CNOPC :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var count = 0
			for parent in mclass.in_hierarchy(mainmodule).direct_greaters do
				if parent == mclass then continue
				if parent.kind == abstract_kind or parent.kind == concrete_kind or parent.kind == extern_kind then
					count += 1
				end
			end
			values[mclass] = count
		end
	end
src/metrics/inheritance_metrics.nit:298,2--309,4

nitc $ CNOCC :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var count = 0
			for parent in mclass.in_hierarchy(mainmodule).direct_smallers do
				if parent == mclass then continue
				if parent.kind == abstract_kind or parent.kind == concrete_kind or parent.kind == extern_kind then
					count += 1
				end
			end
			values[mclass] = count
		end
	end
src/metrics/inheritance_metrics.nit:321,2--332,4

nitc $ CNODC :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var count = 0
			for parent in mclass.in_hierarchy(mainmodule).smallers do
				if parent == mclass then continue
				if parent.kind == abstract_kind or parent.kind == concrete_kind or parent.kind == extern_kind then
					count += 1
				end
			end
			values[mclass] = count
		end
	end
src/metrics/inheritance_metrics.nit:344,2--355,4

nitc $ CNOAA :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var count = 0
			for parent in mclass.in_hierarchy(mainmodule).greaters do
				if parent == mclass then continue
				if parent.kind == abstract_kind then
					count += 1
				end
			end
			values[mclass] = count
		end
	end
src/metrics/inheritance_metrics.nit:367,2--378,4

nitc $ CNOAI :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var count = 0
			for parent in mclass.in_hierarchy(mainmodule).greaters do
				if parent == mclass then continue
				if parent.kind == interface_kind then
					count += 1
				end
			end
			values[mclass] = count
		end
	end
src/metrics/inheritance_metrics.nit:390,2--401,4

nitc $ CNOPI :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var count = 0
			for parent in mclass.in_hierarchy(mainmodule).direct_greaters do
				if parent == mclass then continue
				if parent.kind == interface_kind then
					count += 1
				end
			end
			values[mclass] = count
		end
	end
src/metrics/inheritance_metrics.nit:413,2--424,4

nitc $ CNOCI :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var count = 0
			for parent in mclass.in_hierarchy(mainmodule).direct_smallers do
				if parent == mclass then continue
				if parent.kind == interface_kind then
					count += 1
				end
			end
			values[mclass] = count
		end
	end
src/metrics/inheritance_metrics.nit:436,2--447,4

nitc $ CNODI :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var count = 0
			for parent in mclass.in_hierarchy(mainmodule).smallers do
				if parent == mclass then continue
				if parent.kind == interface_kind then
					count += 1
				end
			end
			values[mclass] = count
		end
	end
src/metrics/inheritance_metrics.nit:459,2--470,4

nitc $ CDITC :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.ditc(mainmodule)
		end
	end
src/metrics/inheritance_metrics.nit:482,2--486,4

nitc $ CDITI :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			values[mclass] = mclass.diti(mainmodule)
		end
	end
src/metrics/inheritance_metrics.nit:498,2--502,4

nitc $ CNBNA :: collect
	redef fun collect(mclasses) do
		for mclass in mclasses do
			var all = mclass.collect_accessible_mattributes(mainmodule, filter)
			for mattr in all do
				if mattr.is_nullable then values.inc(mclass)
			end
		end
	end
src/metrics/nullables_metrics.nit:89,2--96,4

nitc $ CNLI :: collect
	redef fun collect(mclasses) do end
src/metrics/rta_metrics.nit:267,2--35

nitc $ CNLC :: collect
	redef fun collect(mclasses) do end
src/metrics/rta_metrics.nit:279,2--35

nitc $ TNLI :: collect
	redef fun collect(mtypes) do end
src/metrics/rta_metrics.nit:299,2--33

nitc $ TNLC :: collect
	redef fun collect(mtypes) do end
src/metrics/rta_metrics.nit:311,2--33

nitc $ TAGS :: collect
	redef fun collect(mtypes) do
		for mtype in mtypes do
			if mtype isa MGenericType then
				values[mtype] = mtype.arguments.length
			else
				values[mtype] = 0
			end
		end
	end
src/metrics/rta_metrics.nit:324,2--332,4

nitc $ TDGS :: collect
	redef fun collect(mtypes) do
		for mtype in mtypes do
			values[mtype] = mtype.signature_depth
		end
	end
src/metrics/rta_metrics.nit:345,2--349,4

nitc $ MNLI :: collect
	redef fun collect(mainmodules) do
		for mainmodule in mainmodules do
			var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
			analysis.run_analysis
			values[mainmodule] = analysis.tnli.sum
		end
	end
src/metrics/rta_metrics.nit:140,2--146,4

nitc $ MNLT :: collect
	redef fun collect(mainmodules) do
		for mainmodule in mainmodules do
			var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
			analysis.run_analysis
			values[mainmodule] = analysis.live_types.length
		end
	end
src/metrics/rta_metrics.nit:156,2--162,4

nitc $ MNCT :: collect
	redef fun collect(mainmodules) do
		for mainmodule in mainmodules do
			var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
			analysis.run_analysis
			values[mainmodule] = analysis.live_cast_types.length
		end
	end
src/metrics/rta_metrics.nit:172,2--178,4

nitc $ MNLC :: collect
	redef fun collect(mainmodules) do
		for mainmodule in mainmodules do
			var live = new HashSet[MClass]
			var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
			analysis.run_analysis
			for mtype in analysis.live_types do
				live.add(mtype.mclass)
			end
			values[mainmodule] = live.length
		end
	end
src/metrics/rta_metrics.nit:188,2--198,4

nitc $ MNLM :: collect
	redef fun collect(mainmodules) do
		for mainmodule in mainmodules do
			var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
			analysis.run_analysis
			values[mainmodule] = analysis.live_methods.length
		end
	end
src/metrics/rta_metrics.nit:208,2--214,4

nitc $ MNLMD :: collect
	redef fun collect(mainmodules) do
		for mainmodule in mainmodules do
			var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
			analysis.run_analysis
			values[mainmodule] = analysis.live_methoddefs.length
		end
	end
src/metrics/rta_metrics.nit:224,2--230,4

nitc $ MNLDD :: collect
	redef fun collect(mainmodules) do
		for mainmodule in mainmodules do
			var dead = 0
			var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule)
			analysis.run_analysis
			for mmethod in analysis.live_methods do
				for mdef in mmethod.mpropdefs do
					if analysis.live_methoddefs.has(mdef) or mdef.is_abstract then continue
					dead += 1
				end
			end
			values[mainmodule] = dead
		end
	end
src/metrics/rta_metrics.nit:240,2--253,4