X-Git-Url: http://nitlanguage.org diff --git a/src/catalog.nit b/src/catalog.nit index be619e2..92510bc 100644 --- a/src/catalog.nit +++ b/src/catalog.nit @@ -235,6 +235,9 @@ class Catalog # Number of warnings and advices var warnings = new Counter[MPackage] + # Number of warnings per 1000 lines of code (w/kloc) + var warnings_per_kloc = new Counter[MPackage] + # Documentation score (between 0 and 100) var documentation_score = new Counter[MPackage] @@ -359,8 +362,9 @@ class Catalog var doc_score = 0.0 for g in mpackage.mgroups do mmodules += g.mmodules.length - entity_score += 1.0 - if g.mdoc != null then doc_score += 1.0 + var gs = 1.0 + entity_score += gs + if g.mdoc != null then doc_score += gs for m in g.mmodules do var source = m.location.file if source != null then @@ -379,21 +383,23 @@ class Catalog loc += file.line_starts.length - 1 end end - entity_score += 1.0 - if m.mdoc != null then doc_score += 1.0 + var ms = gs + if m.is_test_suite then ms /= 100.0 + entity_score += ms + if m.mdoc != null then doc_score += ms else ms /= 10.0 for cd in m.mclassdefs do - var s = 0.2 - if not cd.is_intro then s /= 10.0 - if not cd.mclass.visibility <= private_visibility then s /= 10.0 - entity_score += s - if cd.mdoc != null then doc_score += s + var cs = ms * 0.2 + if not cd.is_intro then cs /= 100.0 + if not cd.mclass.visibility <= private_visibility then cs /= 100.0 + entity_score += cs + if cd.mdoc != null then doc_score += cs mclasses += 1 for pd in cd.mpropdefs do - s = 0.1 - if not pd.is_intro then s /= 10.0 - if not pd.mproperty.visibility <= private_visibility then s /= 10.0 - entity_score += s - if pd.mdoc != null then doc_score += s + var ps = ms * 0.1 + if not pd.is_intro then ps /= 100.0 + if not pd.mproperty.visibility <= private_visibility then ps /= 100.0 + entity_score += ps + if pd.mdoc != null then doc_score += ps if not pd isa MMethodDef then continue mmethods += 1 end @@ -406,6 +412,9 @@ class Catalog self.loc[mpackage] = loc self.errors[mpackage] = errors self.warnings[mpackage] = warnings + if loc > 0 then + self.warnings_per_kloc[mpackage] = warnings * 1000 / loc + end var documentation_score = (100.0 * doc_score / entity_score).to_i self.documentation_score[mpackage] = documentation_score