]> matita.cs.unibo.it Git - helm.git/commitdiff
added generation of KLOCs in dot diagrams
authorStefano Zacchiroli <zack@upsilon.cc>
Thu, 26 Jan 2006 09:38:01 +0000 (09:38 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Thu, 26 Jan 2006 09:38:01 +0000 (09:38 +0000)
helm/ocaml/Makefile.common.in
helm/ocaml/Makefile.in
helm/ocaml/daemons.dot
helm/ocaml/deps.patch
helm/ocaml/patch_deps.sh
helm/ocaml/tactics/Makefile
helm/ocaml/utf8_macros/Makefile

index ef569ff80cf8a9121c30364bdfc933d38111df7e..9dff7894208c365a65473fd681eab2bbebf6cd3c 100644 (file)
@@ -104,6 +104,16 @@ ocamlinit:
        for p in $(REQUIRES); do echo "#require \"$$p\";;" >> .ocamlinit; done
        echo "#load \"$(PACKAGE).cma\";;" >> .ocamlinit
 
+# $(STATS_EXCLUDE) may be defined in libraries' Makefile to exclude some file
+# from statistics collection
+STATS_FILES = \
+       $(shell find . -maxdepth 1 -type f -name \*.ml $(foreach f,$(STATS_EXCLUDE),-not -name $(f))) \
+       $(shell find . -maxdepth 1 -type f -name \*.mli $(foreach f,$(STATS_EXCLUDE),-not -name $(f)))
+.stats: $(STATS_FILES)
+       rm -f .stats
+       echo -n "LOC:" >> .stats
+       wc -l $(STATS_FILES) | tail -1 | awk '{ print $$1 }' >> .stats
+
 .PHONY: all opt world backup depend install uninstall clean ocamlinit
 
 ifneq ($(MAKECMDGOALS), depend)
index 31744803e7e8dfd65124ada92cb8da44247109ba..66a0ae74a43192ecd502d87ddab85c16c0d33a9d 100644 (file)
@@ -45,6 +45,10 @@ install: $(MODULES:%=%.install)
 uninstall: $(MODULES:%=%.uninstall)
 clean: $(MODULES:%=%.clean)
 
+.stats: $(MODULES:%=%.stats)
+       (for m in $(MODULES); do echo -n "$$m:"; cat $$m/.stats; done) \
+        | sort -t : -k 2 -n -r > .stats
+
 clean_metas:
        rm -f $(METAS)
 distclean: clean clean_metas
@@ -60,6 +64,8 @@ distclean: clean clean_metas
        OCAMLPATH=$(OCAMLPATH):$$OCAMLPATH $(MAKE) -C $* clean
 %.depend:
        OCAMLPATH=$(OCAMLPATH):$$OCAMLPATH $(MAKE) -C $* depend
+%.stats:
+       $(MAKE) -C $* .stats
 
 $(MODULES:%=%.install):
        cd $(@:%.install=%) && make install
index 93c122d8a3660681e9bb8eb14d33748b095274d9..4a8ba388fac5a26b80d803133937bf50431dcd13 100644 (file)
@@ -1,12 +1,12 @@
   /* apps */
   subgraph applications {
     node [shape=plaintext,style=filled,fillcolor=slategray2];
-    DependencyAnalyzer [label="Dependency\nAnalyzer"];
-    Getter;
-    Matita;
-    ProofChecker [label="Proof\nChecker"];
-    Uwobo;
-    Whelp;
+    DependencyAnalyzer [label="Dependency\nAnalyzer\n .3 klocs"];
+    Getter [label="Getter\n .3 klocs"];
+    Matita [label="Matita\n 6.7 klocs"];
+    ProofChecker [label="Proof Checker\n .1 klocs"];
+    Uwobo [label="Uwobo\n 2.1 klocs"];
+    Whelp [label="Whelp\n .6 klocs"];
   }
   /* apps dep */
   DependencyAnalyzer -> metadata;
index d7f9cf8c9edf269daf269a4fee5d15a12cc59b37..90130dfe82a4d9d510046b5df42d9f19bc1ef9f9 100644 (file)
@@ -1,11 +1,23 @@
---- .dep.dot   2005-12-19 12:07:15.000000000 +0100
-+++ .dep.dot.new       2005-12-19 12:08:10.000000000 +0100
-@@ -14,7 +14,7 @@
+--- .clustersdep.dot   2006-01-26 10:10:46.000000000 +0100
++++ .clustersdep.new   2006-01-26 10:10:44.000000000 +0100
+@@ -1,11 +1,8 @@
+ digraph G {
+   xml [label="xml\n.5 klocs"];
+-  xmldiff [label="xmldiff\n.3 klocs"];
+   whelp [label="whelp\n.3 klocs"];
+   utf8_macros [label="utf8_macros\n.2 klocs"];
+   urimanager [label="urimanager\n.2 klocs"];
+-  thread [label="thread\n.2 klocs"];
+-  paramodulation [label="paramodulation\n5.9 klocs"];
+   tactics [label="tactics\n10.0 klocs"];
+   registry [label="registry\n.6 klocs"];
+   metadata [label="metadata\n1.9 klocs"];
+@@ -42,7 +39,7 @@
  "cic_unification" -> "library";
  "library" -> "metadata";
  "library" -> "cic_acic";
 -"metadata" -> "cic_proof_checking";
 +"metadata" -> "cic";
  "metadata" -> "hmysql";
- "grafite" -> "content_pres";
+ "grafite" -> "cic";
  "content_pres" -> "utf8_macros";
index cd9f09c8976277102a8ce1dbf84b3d9cb5dce574..dbdd27c1111489c9511ff7c18d6cf12868065579 100755 (executable)
@@ -10,10 +10,30 @@ fi
 # file will be modified in place
 include_dot_snippet ()
 {
-  echo "Adding to $1 graphviz snipet $2 ..."
+  echo "Adding to $1 graphviz snippet $2 ..."
   sed -i "/digraph/r $2" $1
 }
 
+# args: stats file
+# file will be modified in place
+include_loc_stats ()
+{
+  echo "Adding to $1 KLOCs stats from $2 ..."
+  tmp=`mktemp tmp.stats.XXXXXX`
+  for l in `cat $2`; do
+    module=$(basename $(echo $l | cut -d : -f 1))
+    stat=$(echo $l | cut -d : -f 2)
+    if [ "$stat" = "LOC" ]; then
+      locs=$(echo $l | cut -d : -f 3)
+      klocs=$(echo "scale=1; $locs / 1000" | bc)
+      if [ "$klocs" = "0" ]; then klocs=".1"; fi
+      printf '  %s [label="%s\\n%s klocs"];\n' $module $module $klocs >> $tmp
+    fi
+  done
+  include_dot_snippet $1 $tmp
+  rm $tmp
+}
+
 # args: file patch
 apply_patch ()
 {
@@ -24,6 +44,7 @@ apply_patch ()
 }
 
 cp $1 $2
+include_loc_stats $2 .stats
 apply_patch $2 deps.patch
 include_dot_snippet $2 daemons.dot
 if [ "$use_clusters" = "yes" ]; then
index 57937414c9940d113229d4d6bbc1dd0b966f05cd..a39d01930c0ac3d19778b1a0156481b9f3eb5bda 100644 (file)
@@ -26,6 +26,8 @@ tactics.mli: tactics.ml *Tactics.mli *Tactic.mli fourierR.mli ring.mli paramodul
        echo "(* GENERATED FILE, DO NOT EDIT *)" > $@
        $(OCAMLC) -I paramodulation -i $< >> $@
 
+STATS_EXCLUDE = tactics.mli
+
 include ../Makefile.common
 
 OCAMLOPTIONS+= -I paramodulation
index e3afd40f61645dfeb93bc91860223bf78823fca7..018f58cefffa3a58efe6d193c47b6c7fe33f4bc1 100644 (file)
@@ -32,5 +32,7 @@ distclean: extra_clean
 extra_clean:
        rm -f make_table test
 
+STATS_EXCLUDE = utf8MacroTable.ml
+
 include ../Makefile.common