Diff of the two buildlogs:

--
--- b1/build.log	2024-11-26 02:20:50.828190302 +0000
+++ b2/build.log	2024-11-26 02:26:57.831620573 +0000
@@ -1,6 +1,6 @@
 I: pbuilder: network access will be disabled during build
-I: Current time: Mon Nov 25 14:12:10 -12 2024
-I: pbuilder-time-stamp: 1732587130
+I: Current time: Tue Nov 26 16:21:00 +14 2024
+I: pbuilder-time-stamp: 1732587660
 I: Building the build Environment
 I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz]
 I: copying local configuration
@@ -30,52 +30,84 @@
 dpkg-source: info: applying doxygen-1.9.8.patch
 I: Not using root during the build.
 I: Installing the build-deps
-I: user script /srv/workspace/pbuilder/11323/tmp/hooks/D02_print_environment starting
+I: user script /srv/workspace/pbuilder/28620/tmp/hooks/D01_modify_environment starting
+debug: Running on virt64b.
+I: Changing host+domainname to test build reproducibility
+I: Adding a custom variable just for the fun of it...
+I: Changing /bin/sh to bash
+'/bin/sh' -> '/bin/bash'
+lrwxrwxrwx 1 root root 9 Nov 26 02:21 /bin/sh -> /bin/bash
+I: Setting pbuilder2's login shell to /bin/bash
+I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other
+I: user script /srv/workspace/pbuilder/28620/tmp/hooks/D01_modify_environment finished
+I: user script /srv/workspace/pbuilder/28620/tmp/hooks/D02_print_environment starting
 I: set
-  BUILDDIR='/build/reproducible-path'
-  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
-  BUILDUSERNAME='pbuilder1'
-  BUILD_ARCH='armhf'
-  DEBIAN_FRONTEND='noninteractive'
-  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 '
-  DISTRIBUTION='unstable'
-  HOME='/root'
-  HOST_ARCH='armhf'
+  BASH=/bin/sh
+  BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
+  BASH_ALIASES=()
+  BASH_ARGC=()
+  BASH_ARGV=()
+  BASH_CMDS=()
+  BASH_LINENO=([0]="12" [1]="0")
+  BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
+  BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment")
+  BASH_VERSINFO=([0]="5" [1]="2" [2]="32" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf")
+  BASH_VERSION='5.2.32(1)-release'
+  BUILDDIR=/build/reproducible-path
+  BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other'
+  BUILDUSERNAME=pbuilder2
+  BUILD_ARCH=armhf
+  DEBIAN_FRONTEND=noninteractive
+  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 '
+  DIRSTACK=()
+  DISTRIBUTION=unstable
+  EUID=0
+  FUNCNAME=([0]="Echo" [1]="main")
+  GROUPS=()
+  HOME=/root
+  HOSTNAME=i-capture-the-hostname
+  HOSTTYPE=arm
+  HOST_ARCH=armhf
   IFS=' 	
   '
-  INVOCATION_ID='0a909ac4872a46f5b7061ab6f75a8fc8'
-  LANG='C'
-  LANGUAGE='en_US:en'
-  LC_ALL='C'
-  MAIL='/var/mail/root'
-  OPTIND='1'
-  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
-  PBCURRENTCOMMANDLINEOPERATION='build'
-  PBUILDER_OPERATION='build'
-  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
-  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
-  PBUILDER_SYSCONFDIR='/etc'
-  PPID='11323'
-  PS1='# '
-  PS2='> '
+  INVOCATION_ID=dc2f51a2470042e4a8cd947576e38f72
+  LANG=C
+  LANGUAGE=it_CH:it
+  LC_ALL=C
+  MACHTYPE=arm-unknown-linux-gnueabihf
+  MAIL=/var/mail/root
+  OPTERR=1
+  OPTIND=1
+  OSTYPE=linux-gnueabihf
+  PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path
+  PBCURRENTCOMMANDLINEOPERATION=build
+  PBUILDER_OPERATION=build
+  PBUILDER_PKGDATADIR=/usr/share/pbuilder
+  PBUILDER_PKGLIBDIR=/usr/lib/pbuilder
+  PBUILDER_SYSCONFDIR=/etc
+  PIPESTATUS=([0]="0")
+  POSIXLY_CORRECT=y
+  PPID=28620
   PS4='+ '
-  PWD='/'
-  SHELL='/bin/bash'
-  SHLVL='2'
-  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.nOU56hCa/pbuilderrc_7VWb --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.nOU56hCa/b1 --logfile b1/build.log analizo_1.25.5-1.dsc'
-  SUDO_GID='112'
-  SUDO_UID='106'
-  SUDO_USER='jenkins'
-  TERM='unknown'
-  TZ='/usr/share/zoneinfo/Etc/GMT+12'
-  USER='root'
-  _='/usr/bin/systemd-run'
-  http_proxy='http://10.0.0.15:3142/'
+  PWD=/
+  SHELL=/bin/bash
+  SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix
+  SHLVL=3
+  SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.nOU56hCa/pbuilderrc_JXrI --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.nOU56hCa/b2 --logfile b2/build.log analizo_1.25.5-1.dsc'
+  SUDO_GID=113
+  SUDO_UID=107
+  SUDO_USER=jenkins
+  TERM=unknown
+  TZ=/usr/share/zoneinfo/Etc/GMT-14
+  UID=0
+  USER=root
+  _='I: set'
+  http_proxy=http://10.0.0.15:3142/
 I: uname -a
-  Linux virt32b 6.1.0-28-armmp-lpae #1 SMP Debian 6.1.119-1 (2024-11-22) armv7l GNU/Linux
+  Linux i-capture-the-hostname 6.1.0-28-arm64 #1 SMP Debian 6.1.119-1 (2024-11-22) aarch64 GNU/Linux
 I: ls -l /bin
   lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin
-I: user script /srv/workspace/pbuilder/11323/tmp/hooks/D02_print_environment finished
+I: user script /srv/workspace/pbuilder/28620/tmp/hooks/D02_print_environment finished
  -> Attempting to satisfy build-dependencies
  -> Creating pbuilder-satisfydepends-dummy package
 Package: pbuilder-satisfydepends-dummy
@@ -402,7 +434,7 @@
 Get: 223 http://deb.debian.org/debian unstable/main armhf libzmq5 armhf 4.3.5-1+b3 [239 kB]
 Get: 224 http://deb.debian.org/debian unstable/main armhf libzmq3-dev armhf 4.3.5-1+b3 [473 kB]
 Get: 225 http://deb.debian.org/debian unstable/main armhf libzmq-ffi-perl all 1.19-1 [31.5 kB]
-Fetched 106 MB in 4s (26.4 MB/s)
+Fetched 106 MB in 10s (11.2 MB/s)
 debconf: delaying package configuration, since apt-utils is not installed
 Selecting previously unselected package netbase.
 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19685 files and directories currently installed.)
@@ -1324,7 +1356,11 @@
 Building tag database...
  -> Finished parsing the build-deps
 I: Building the package
-I: Running cd /build/reproducible-path/analizo-1.25.5/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../analizo_1.25.5-1_source.changes
+I: user script /srv/workspace/pbuilder/28620/tmp/hooks/A99_set_merged_usr starting
+Not re-configuring usrmerge for unstable
+I: user script /srv/workspace/pbuilder/28620/tmp/hooks/A99_set_merged_usr finished
+hostname: Name or service not known
+I: Running cd /build/reproducible-path/analizo-1.25.5/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S  > ../analizo_1.25.5-1_source.changes
 dpkg-buildpackage: info: source package analizo
 dpkg-buildpackage: info: source version 1.25.5-1
 dpkg-buildpackage: info: source distribution unstable
@@ -1349,74 +1385,74 @@
 Writing Makefile for Analizo
 Writing MYMETA.yml and MYMETA.json
    dh_auto_build
-	make -j3
+	make -j4
 make[1]: Entering directory '/build/reproducible-path/analizo-1.25.5'
-cp share/bash-completion/analizo blib/lib/auto/share/dist/Analizo/bash-completion/analizo
 cp share/README blib/lib/auto/share/dist/Analizo/README
+cp share/bash-completion/analizo blib/lib/auto/share/dist/Analizo/bash-completion/analizo
+cp lib/Analizo/Batch/Output.pm blib/lib/Analizo/Batch/Output.pm
+cp lib/Analizo/Command/tree_evolution.pm blib/lib/Analizo/Command/tree_evolution.pm
+cp lib/Analizo/FilenameFilter.pm blib/lib/Analizo/FilenameFilter.pm
+cp lib/Analizo/Metric/AverageMethodLinesOfCode.pm blib/lib/Analizo/Metric/AverageMethodLinesOfCode.pm
+cp lib/Analizo/Batch/Runner/Sequential.pm blib/lib/Analizo/Batch/Runner/Sequential.pm
+cp lib/Analizo/LanguageFilter.pm blib/lib/Analizo/LanguageFilter.pm
+cp lib/Analizo/Batch/Git.pm blib/lib/Analizo/Batch/Git.pm
+cp lib/Analizo/Batch/Job/Directories.pm blib/lib/Analizo/Batch/Job/Directories.pm
 cp lib/Analizo/Command.pm blib/lib/Analizo/Command.pm
-cp lib/Analizo/Extractor.pm blib/lib/Analizo/Extractor.pm
+cp lib/Analizo/Command/metrics_history.pm blib/lib/Analizo/Command/metrics_history.pm
+cp lib/Analizo/Command/metrics_batch.pm blib/lib/Analizo/Command/metrics_batch.pm
 cp lib/Analizo/Batch.pm blib/lib/Analizo/Batch.pm
-cp lib/Analizo/Extractor/Doxyparse.pm blib/lib/Analizo/Extractor/Doxyparse.pm
-cp lib/Analizo/Batch/Runner/Parallel.pm blib/lib/Analizo/Batch/Runner/Parallel.pm
-cp lib/Analizo/Batch/Runner.pm blib/lib/Analizo/Batch/Runner.pm
+cp lib/Analizo/GlobalMetrics.pm blib/lib/Analizo/GlobalMetrics.pm
+cp lib/Analizo/Batch/Output/CSV.pm blib/lib/Analizo/Batch/Output/CSV.pm
+cp lib/Analizo/Command/metrics.pm blib/lib/Analizo/Command/metrics.pm
 cp lib/Analizo/Metric/AverageCycloComplexity.pm blib/lib/Analizo/Metric/AverageCycloComplexity.pm
-cp lib/Analizo/Batch/Output.pm blib/lib/Analizo/Batch/Output.pm
+cp lib/Analizo/Metric/AverageNumberOfParameters.pm blib/lib/Analizo/Metric/AverageNumberOfParameters.pm
 cp lib/Analizo/Metric/AfferentConnections.pm blib/lib/Analizo/Metric/AfferentConnections.pm
-cp lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm blib/lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm
-cp lib/Analizo/Batch/Job/Directories.pm blib/lib/Analizo/Batch/Job/Directories.pm
+cp lib/Analizo.pm blib/lib/Analizo.pm
+cp lib/Analizo/Extractor/Doxyparse.pm blib/lib/Analizo/Extractor/Doxyparse.pm
 cp lib/Analizo/GlobalMetric/ChangeCost.pm blib/lib/Analizo/GlobalMetric/ChangeCost.pm
-cp lib/Analizo/Command/metrics_batch.pm blib/lib/Analizo/Command/metrics_batch.pm
+cp lib/Analizo/Batch/Runner.pm blib/lib/Analizo/Batch/Runner.pm
 cp lib/Analizo/Filter/Client.pm blib/lib/Analizo/Filter/Client.pm
-cp lib/Analizo/Command/graph.pm blib/lib/Analizo/Command/graph.pm
-cp lib/Analizo/Command/metrics.pm blib/lib/Analizo/Command/metrics.pm
-cp lib/Analizo/Batch/Output/DB.pm blib/lib/Analizo/Batch/Output/DB.pm
-cp lib/Analizo.pm blib/lib/Analizo.pm
-cp lib/Analizo/GlobalMetric/TotalAbstractClasses.pm blib/lib/Analizo/GlobalMetric/TotalAbstractClasses.pm
 cp lib/Analizo/Command/files_graph.pm blib/lib/Analizo/Command/files_graph.pm
-cp lib/Analizo/Batch/Git.pm blib/lib/Analizo/Batch/Git.pm
+cp lib/Analizo/Extractor.pm blib/lib/Analizo/Extractor.pm
+cp lib/Analizo/Batch/Output/DB.pm blib/lib/Analizo/Batch/Output/DB.pm
+cp lib/Analizo/Batch/Runner/Parallel.pm blib/lib/Analizo/Batch/Runner/Parallel.pm
 cp lib/Analizo/Batch/Job.pm blib/lib/Analizo/Batch/Job.pm
-cp lib/Analizo/Command/help.pm blib/lib/Analizo/Command/help.pm
-cp lib/Analizo/Batch/Output/CSV.pm blib/lib/Analizo/Batch/Output/CSV.pm
-cp lib/Analizo/LanguageFilter.pm blib/lib/Analizo/LanguageFilter.pm
-cp lib/Analizo/FilenameFilter.pm blib/lib/Analizo/FilenameFilter.pm
-cp lib/Analizo/Command/tree_evolution.pm blib/lib/Analizo/Command/tree_evolution.pm
-cp lib/Analizo/Batch/Job/Git.pm blib/lib/Analizo/Batch/Job/Git.pm
-cp lib/Analizo/Command/metrics_history.pm blib/lib/Analizo/Command/metrics_history.pm
 cp lib/Analizo/Batch/Directories.pm blib/lib/Analizo/Batch/Directories.pm
-cp lib/Analizo/GlobalMetrics.pm blib/lib/Analizo/GlobalMetrics.pm
-cp lib/Analizo/Metric/AverageMethodLinesOfCode.pm blib/lib/Analizo/Metric/AverageMethodLinesOfCode.pm
-cp lib/Analizo/Batch/Runner/Sequential.pm blib/lib/Analizo/Batch/Runner/Sequential.pm
-cp lib/Analizo/Metric/AverageNumberOfParameters.pm blib/lib/Analizo/Metric/AverageNumberOfParameters.pm
-cp lib/Analizo/Metric/DepthOfInheritanceTree.pm blib/lib/Analizo/Metric/DepthOfInheritanceTree.pm
-cp lib/Test/Analizo/Git.pm blib/lib/Test/Analizo/Git.pm
-cp lib/Analizo/Metrics.pm blib/lib/Analizo/Metrics.pm
-cp lib/Analizo/Metric/NumberOfAttributes.pm blib/lib/Analizo/Metric/NumberOfAttributes.pm
+cp lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm blib/lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm
+cp lib/Analizo/GlobalMetric/TotalAbstractClasses.pm blib/lib/Analizo/GlobalMetric/TotalAbstractClasses.pm
+cp lib/Analizo/Command/graph.pm blib/lib/Analizo/Command/graph.pm
+cp lib/Analizo/Batch/Job/Git.pm blib/lib/Analizo/Batch/Job/Git.pm
+cp lib/Analizo/Command/help.pm blib/lib/Analizo/Command/help.pm
+cp lib/Analizo/Metric/StructuralComplexity.pm blib/lib/Analizo/Metric/StructuralComplexity.pm
 cp lib/Analizo/Metric/NumberOfChildren.pm blib/lib/Analizo/Metric/NumberOfChildren.pm
-cp lib/Analizo/Metric/NumberOfPublicAttributes.pm blib/lib/Analizo/Metric/NumberOfPublicAttributes.pm
-cp lib/Analizo/Metric/ResponseForClass.pm blib/lib/Analizo/Metric/ResponseForClass.pm
-cp profile.pl blib/lib/profile.pl
-cp lib/Analizo/ModuleMetrics.pm blib/lib/Analizo/ModuleMetrics.pm
-cp lib/Analizo/Model.pm blib/lib/Analizo/Model.pm
 cp lib/Test/Analizo/Class.pm blib/lib/Test/Analizo/Class.pm
-cp lib/Analizo/Metric/LackOfCohesionOfMethods.pm blib/lib/Analizo/Metric/LackOfCohesionOfMethods.pm
-cp lib/Test/Analizo/BDD/Cucumber/Extension.pm blib/lib/Test/Analizo/BDD/Cucumber/Extension.pm
 cp lib/Analizo/Metric/CouplingBetweenObjects.pm blib/lib/Analizo/Metric/CouplingBetweenObjects.pm
-cp lib/Analizo/ModuleMetric.pm blib/lib/Analizo/ModuleMetric.pm
-cp lib/Analizo/Metric/StructuralComplexity.pm blib/lib/Analizo/Metric/StructuralComplexity.pm
+cp lib/Analizo/Metric/DepthOfInheritanceTree.pm blib/lib/Analizo/Metric/DepthOfInheritanceTree.pm
+cp lib/Analizo/Metric/ResponseForClass.pm blib/lib/Analizo/Metric/ResponseForClass.pm
+cp lib/Analizo/ModuleMetrics.pm blib/lib/Analizo/ModuleMetrics.pm
+cp lib/Analizo/Metrics.pm blib/lib/Analizo/Metrics.pm
 cp lib/Analizo/Metric/NumberOfPublicMethods.pm blib/lib/Analizo/Metric/NumberOfPublicMethods.pm
+cp profile.pl blib/lib/profile.pl
 cp lib/Test/Analizo.pm blib/lib/Test/Analizo.pm
+cp lib/Analizo/Metric/LackOfCohesionOfMethods.pm blib/lib/Analizo/Metric/LackOfCohesionOfMethods.pm
+cp lib/Analizo/Metric/NumberOfPublicAttributes.pm blib/lib/Analizo/Metric/NumberOfPublicAttributes.pm
+cp lib/Analizo/Metric/NumberOfAttributes.pm blib/lib/Analizo/Metric/NumberOfAttributes.pm
+cp lib/Analizo/Model.pm blib/lib/Analizo/Model.pm
+cp lib/Test/Analizo/Git.pm blib/lib/Test/Analizo/Git.pm
 cp lib/Analizo/Metric/NumberOfMethods.pm blib/lib/Analizo/Metric/NumberOfMethods.pm
+cp lib/Analizo/ModuleMetric.pm blib/lib/Analizo/ModuleMetric.pm
 cp lib/Analizo/Metric/MaximumMethodLinesOfCode.pm blib/lib/Analizo/Metric/MaximumMethodLinesOfCode.pm
 cp lib/Analizo/Metric/LinesOfCode.pm blib/lib/Analizo/Metric/LinesOfCode.pm
+cp lib/Test/Analizo/BDD/Cucumber/Extension.pm blib/lib/Test/Analizo/BDD/Cucumber/Extension.pm
 cp bin/analizo blib/script/analizo
 "/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/analizo
 Manifying 26 pod documents
 make[1]: Leaving directory '/build/reproducible-path/analizo-1.25.5'
    dh_auto_test
-	make -j3 test TEST_VERBOSE=1
+	make -j4 test TEST_VERBOSE=1
 make[1]: Entering directory '/build/reproducible-path/analizo-1.25.5'
-Skip blib/lib/auto/share/dist/Analizo/README (unchanged)
 Skip blib/lib/auto/share/dist/Analizo/bash-completion/analizo (unchanged)
+Skip blib/lib/auto/share/dist/Analizo/README (unchanged)
 PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t t/Analizo/*.t t/Analizo/Batch/*.t t/Analizo/Batch/Job/*.t t/Analizo/Batch/Output/*.t t/Analizo/Batch/Runner/*.t t/Analizo/Command/*.t t/Analizo/Extractor/*.t t/Analizo/GlobalMetric/*.t t/Analizo/Metric/*.t t/Analizo/Metric/AfferentConnections/*.t
 # 
 # t::Analizo->constructor
@@ -1500,8 +1536,8 @@
 ok 8 - must not analyze commit containing only (prog.cc)
 ok 9 - must not analyze commit containing only (prog.cc)
 ok 10 - must not analyze commit containing only (prog.cc)
-ok 11 - must not analyze commit containing only (output.cc,output.h,prog.cc)
-ok 12 - must not analyze commit containing only (prog.cc,input.cc,input.h)
+ok 11 - must not analyze commit containing only (output.h,prog.cc,output.cc)
+ok 12 - must not analyze commit containing only (input.h,input.cc,prog.cc)
 ok 13 - must not analyze commit containing only (prog.cc)
 ok 14 - find commit
 ok 15 - An object of class 'Analizo::Batch::Job::Git' isa 'Analizo::Batch::Job::Git'
@@ -2829,2316 +2865,2316 @@
 t/author-pod-spell.t ..................................................... skipped: these tests are for testing by the author
 t/author-pod-syntax.t .................................................... skipped: these tests are for testing by the author
 t/features.t ............................................................. 
-# Feature exclude directories from the analysis
-#  As a software developer in a large project I want to exclude some directories from the source code analysis In order to not analyse non-production code such as tests
-# Scenario excluding test directory
-ok 1 - Given I am in t/samples/multidir/cpp
-# 
-ok 2 - When I run "analizo metrics --exclude test ."
+# Feature analizo metrics-history
+#  As a software engineering researcher I want to analyse the entire history of a project To understand its development process
+# Scenario listing merge commits with code changes that should be analyzed
+ok 1 - When I explode t/samples/evolution.tar.gz
 # 
-ok 3 - Then the output must match "module: HelloWorld"
+ok 2 - And I run "analizo metrics-history --list ."
 # 
-ok 4 - And the output must not match "module: hello_test"
+ok 3 - Then the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed"
 # 
-# Scenario excluding test directory
-ok 5 - Given I am in t/samples/multidir/csharp
+ok 4 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e"
 # 
-ok 6 - When I run "analizo metrics --exclude test ."
+ok 5 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce"
 # 
-ok 7 - Then the output must match "module: HelloWorld"
+ok 6 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53"
 # 
-ok 8 - And the output must not match "module: hello_test"
+ok 7 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00"
 # 
-# Scenario excluding a list of directories
-ok 9 - Given I am in t/samples/multidir/cpp
+ok 8 - And the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad"
 # 
-ok 10 - When I run "analizo metrics --exclude test:src ."
+# Scenario non-code commits should not be analyzed
+ok 9 - When I explode t/samples/evolution.tar.gz
 # 
-ok 11 - Then the output must not match "module: HelloWorld"
+ok 10 - And I run "analizo metrics-history --list ."
 # 
-ok 12 - And the output must not match "module: hello_test"
+ok 11 - Then the output must not match "ba62278e976944c0334103aa0044535169e1a51e"
 # 
-# Scenario excluding a list of directories
-ok 13 - Given I am in t/samples/multidir/csharp
+# Scenario merge commits without code change should not be analyzed
+ok 12 - When I explode t/samples/evolution.tar.gz
 # 
-ok 14 - When I run "analizo metrics --exclude test:src ."
+ok 13 - And I run "analizo metrics-history --list ."
 # 
-ok 15 - Then the output must not match "module: HelloWorld"
+ok 14 - Then the output must not match "0fdaaa7dcc8073332a957024fafc8c98f165e725"
 # 
-ok 16 - And the output must not match "module: hello_test"
+# Scenario actually processing merge commits
+ok 15 - When I explode t/samples/evolution.tar.gz
 # 
-# Scenario excluding src directory
-ok 17 - Given I am in t/samples/multidir/cpp
+ok 16 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv"
 # 
-ok 18 - When I run "analizo metrics --exclude src ."
+ok 17 - Then the output must match "^id,previous_commit_id,author_date,author_name,author_email,.*,sc_mean"
 # 
-ok 19 - Then the output must match "module: hello_test"
+ok 18 - And the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed,eb67c27055293e835049b58d7d73ce3664d3f90e"
 # 
-ok 20 - And the output must not match "module: HelloWorld"
+ok 19 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e,,"
 # 
-# Scenario excluding src directory
-ok 21 - Given I am in t/samples/multidir/csharp
+ok 20 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00"
 # 
-ok 22 - When I run "analizo metrics --exclude src ."
+ok 21 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00"
 # 
-ok 23 - Then the output must match "module: hello_test"
+ok 22 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00,0d3c023120ad4e9f519a03fff275d048c52671ad"
 # 
-ok 24 - And the output must not match "module: HelloWorld"
+# Scenario actually processing initial commit and first commit after a non-relevant merge
+ok 23 - When I explode t/samples/evolution.tar.gz
 # 
-# Feature doxyparse extractor external tool
-#  As a Analizo developer I want to guarantee that doxyparse deal with any source code To provide reliability for Analizo users
-# Scenario don't die parsing MCLinker.cpp from android 5.1.1
-ok 25 - Given I am in t/samples/android-framework/android-5.1.1_r38
+ok 24 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv"
 # 
-ok 26 - When I run "analizo metrics ."
+ok 25 - Then the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad,,"
 # 
-ok 27 - Then the exit status must be 0
+ok 26 - And the output must match "8183eafad3a0f3eff6e8869f1bdbfd255e86825a,0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed"
 # 
-# Scenario don't duplicate YAML keys parsing AudioTrackShared.cpp from android 5.1.1
-ok 28 - Given I am in t/samples/android-framework/android-5.1.1_r38
+# Scenario support for parallel processing
+ok 27 - Given I copy t/samples/evolution.tar.gz into a temporary directory
 # 
-ok 29 - When I run "analizo metrics ."
+ok 28 - When I run "tar xzf evolution.tar.gz"
 # 
-ok 30 - Then analizo must not emit a warning matching "YAML_LOAD_WARN_DUPLICATE_KEY"
+ok 29 - And I run "cd evolution && analizo metrics-history -o ../sequential.csv"
 # 
-# Scenario don't abort parsing mlpack 3.0.0
-ok 31 - Given I am in t/samples/mlpack-3.0.0
+ok 30 - And I run "cd evolution && analizo metrics-history -p 2 -o ../parallel.csv"
 # 
-ok 32 - When I run "analizo metrics ."
+ok 31 - Then the exit status must be 0
 # 
-ok 33 - Then analizo must not emit a warning matching "Aborted"
+ok 32 - When I run "sort sequential.csv > sequential-sorted.csv"
 # 
-ok 34 - And the exit status must be 0
+ok 33 - And I run "sort parallel.csv > parallel-sorted.csv"
 # 
-# Scenario don't die parsing kdelibs warning about unknown escape character
-ok 35 - Given I am in t/samples/kdelibs
+ok 34 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv"
 # 
-ok 36 - When I run "analizo metrics ."
+ok 35 - Then the output must not match "---"
 # 
-ok 37 - Then analizo must not emit a warning matching "Error"
+ok 36 - And the exit status must be 0
 # 
-ok 38 - And the exit status must be 0
+# Scenario parsing git log format containing renamed files among status of changed files
+ok 37 - Given I copy t/samples/evolution.tar.gz into a temporary directory
 # 
-# Scenario don't die parsing mod_suexec.h from http 2.4.38
-ok 39 - Given I am in t/samples/httpd-2.4.38
+ok 38 - When I run "tar xzf evolution.tar.gz"
 # 
-ok 40 - When I run "analizo metrics ."
+ok 39 - And I run "cd evolution && git checkout doc && analizo metrics-history ."
 # 
-ok 41 - Then analizo must not emit a warning matching "Not a HASH reference"
+ok 40 - Then the exit status must be 0
 # 
-ok 42 - And the exit status must be 0
+# Scenario language filters
+ok 41 - Given I copy t/samples/mixed into a temporary directory
 # 
-# Scenario allow dot on module filename
-ok 43 - Given I am in t/samples/sample_basic/c
+ok 42 - When I run "(cd mixed && git init && git add * && git commit -m 'initial commit')"
 # 
-ok 44 - When I run "analizo metrics ."
+ok 43 - And I run "analizo metrics-history --language java mixed"
 # 
-ok 45 - Then analizo must report that file module1.c declares module module1
+ok 44 - Then the output must not match "native_backend.c"
 # 
 # Feature analizo wrapper script
 # Scenario invoking a tool
-ok 46 - When I run "analizo metrics lib t"
+ok 45 - When I run "analizo metrics lib t"
 # 
-ok 47 - Then analizo must emit a warning matching "Usage:"
+ok 46 - Then analizo must emit a warning matching "Usage:"
 # 
-ok 48 - And analizo must emit a warning matching "analizo.metrics"
+ok 47 - And analizo must emit a warning matching "analizo.metrics"
 # 
-ok 49 - And the exit status must not be 0
+ok 48 - And the exit status must not be 0
 # 
 # Scenario must not pass --version ahead
-ok 50 - When I run "analizo metrics --version"
+ok 49 - When I run "analizo metrics --version"
 # 
-ok 51 - Then analizo must emit a warning matching "Invalid option: --version"
+ok 50 - Then analizo must emit a warning matching "Invalid option: --version"
 # 
-ok 52 - And the exit status must not be 0
+ok 51 - And the exit status must not be 0
 # 
 # Scenario display help
-ok 53 - When I run "analizo --help"
+ok 52 - When I run "analizo --help"
 # 
-ok 54 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo\s"
+ok 53 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo\s"
 # 
-ok 55 - And the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo\s"
+ok 54 - And the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo\s"
 # 
-ok 56 - And the exit status must be 0
+ok 55 - And the exit status must be 0
 # 
 # Scenario display version
-ok 57 - When I run "analizo --version"
+ok 56 - When I run "analizo --version"
 # 
-ok 58 - Then the output must match "^analizo version [0-9]+.[0-9]+.[0-9]+"
+ok 57 - Then the output must match "^analizo version [0-9]+.[0-9]+.[0-9]+"
 # 
-ok 59 - And the exit status must be 0
+ok 58 - And the exit status must be 0
 # 
 # Scenario invalid option
-ok 60 - When I run "analizo --invalid-option"
+ok 59 - When I run "analizo --invalid-option"
 # 
-ok 61 - Then the output must match "Unrecognized command"
+ok 60 - Then the output must match "Unrecognized command"
 # 
-ok 62 - And the exit status must not be 0
+ok 61 - And the exit status must not be 0
 # 
-# Feature storing VCS data in a database
-#  As a software engineering researcher I want to store data about the changes in a project So that I can analyze the development process
-# Scenario basics
-ok 63 - When I explode t/samples/evolution.tar.gz
+# Feature give manpage on --help
+#  As a user I want to read the manpage when passing --help command line option In order to get instructions on how to use the tools
+# Scenario display manpage for `analizo graph`
+ok 62 - When I run "analizo graph --help"
 # 
-ok 64 - And I run "analizo metrics-history -f db -o data.db"
+ok 63 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-graph"
 # 
-ok 65 - Then the exit status must be 0
+ok 64 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo graph \[OPTIONS\]"
 # 
-ok 66 - When I run "select * from modules" on database "data.db"
+# Scenario display manpage for `analizo metrics`
+ok 65 - When I run "analizo metrics --help"
 # 
-ok 67 - Then the output must match "Input"
+ok 66 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics"
 # 
-ok 68 - And the output must match "Output"
+ok 67 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics \[OPTIONS\]"
 # 
-ok 69 - And the output must match "prog"
+# Scenario display manpage for `analizo metrics-batch`
+ok 68 - When I run "analizo metrics-batch --help"
 # 
-# Feature multi-language support
-#  As a Researcher or Practioneer I want to be able to analyze software in different languages In order do compare them
-# Scenario dependency between modules
-ok 70 - Given I am in t/samples/hello_world/c
+ok 69 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-batch"
 # 
-ok 71 - When I run "analizo graph --modules ."
+ok 70 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-batch \[OPTIONS\]"
 # 
-ok 72 - Then analizo must report that "main" depends on "hello_world"
+# Scenario display manpage for `analizo metrics-history`
+ok 71 - When I run "analizo metrics-history --help"
 # 
-# Scenario dependency between modules
-ok 73 - Given I am in t/samples/hello_world/cpp
+ok 72 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-history"
 # 
-ok 74 - When I run "analizo graph --modules ."
+ok 73 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-history \[OPTIONS\]"
 # 
-ok 75 - Then analizo must report that "main" depends on "HelloWorld"
+# Scenario display manpage for `analizo tree-evolution`
+ok 74 - When I run "analizo tree-evolution --help"
 # 
-# Scenario dependency between modules
-ok 76 - Given I am in t/samples/hello_world/java
+ok 75 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-tree-evolution"
 # 
-ok 77 - When I run "analizo graph --modules ."
+ok 76 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo tree-evolution \[OPTIONS\]"
 # 
-ok 78 - Then analizo must report that "Main" depends on "HelloWorld"
+# Scenario display manpage for `analizo files-graph`
+ok 77 - When I run "analizo files-graph --help"
 # 
-# Scenario dependency between modules
-ok 79 - Given I am in t/samples/hello_world/csharp
+ok 78 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-files-graph"
 # 
-ok 80 - When I run "analizo graph --modules ."
+ok 79 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo files-graph \[OPTIONS\]"
 # 
-ok 81 - Then analizo must report that "main" depends on "HelloWorld"
+# Feature storing VCS data in a database
+#  As a software engineering researcher I want to store data about the changes in a project So that I can analyze the development process
+# Scenario basics
+ok 80 - When I explode t/samples/evolution.tar.gz
 # 
-# Scenario dependency between specific functions
-ok 82 - Given I am in t/samples/hello_world/c
+ok 81 - And I run "analizo metrics-history -f db -o data.db"
 # 
-ok 83 - When I run "analizo graph ."
+ok 82 - Then the exit status must be 0
 # 
-ok 84 - Then analizo must report that "main::main()" depends on "hello_world::hello_world_say(hello_world *)"
+ok 83 - When I run "select * from modules" on database "data.db"
 # 
-ok 85 - And analizo must report that "main::main()" depends on "hello_world::hello_world_destroy(hello_world *)"
+ok 84 - Then the output must match "Input"
 # 
-# Scenario dependency between specific functions
-ok 86 - Given I am in t/samples/hello_world/cpp
+ok 85 - And the output must match "Output"
 # 
-ok 87 - When I run "analizo graph ."
+ok 86 - And the output must match "prog"
 # 
-ok 88 - Then analizo must report that "main::main()" depends on "HelloWorld::say()"
+# Feature metrics batch
+#  As a software engineering researcher I want to analyze several different projects So I can compare their metrics
+# Scenario "hello, world"
+ok 87 - Given I am in t/samples/hello_world/
 # 
-ok 89 - And analizo must report that "main::main()" depends on "HelloWorld::destroy()"
+ok 88 - When I run "analizo metrics-batch"
 # 
-# Scenario dependency between specific functions
-ok 90 - Given I am in t/samples/hello_world/java
+ok 89 - Then the output must match "I: Processed c."
 # 
-ok 91 - When I run "analizo graph ."
+ok 90 - And the output must match "I: Processed cpp."
 # 
-ok 92 - Then analizo must report that "Main::main(String[])" depends on "HelloWorld::say()"
+ok 91 - And the output must match "I: Processed java."
 # 
-ok 93 - And analizo must report that "Main::main(String[])" depends on "HelloWorld::destroy()"
+# Scenario summarizing
+ok 92 - Given I am in t/samples/hello_world/
 # 
-# Scenario dependency between specific functions
-ok 94 - Given I am in t/samples/hello_world/csharp
+ok 93 - When I run "analizo metrics-batch --quiet -o data.csv && cat data.csv && rm -f *.csv"
 # 
-ok 95 - When I run "analizo graph ."
+ok 94 - Then the output must match "^id,"
 # 
-ok 96 - Then analizo must report that "main::Main()" depends on "HelloWorld::say()"
+ok 95 - And the output must not match ",---,"
 # 
-ok 97 - And analizo must report that "main::Main()" depends on "HelloWorld::destroy()"
+ok 96 - And the output must match "c,"
 # 
-# Scenario intra-module dependencies
-ok 98 - Given I am in t/samples/hello_world/c
+ok 97 - And the output must match "cpp,"
 # 
-ok 99 - When I run "analizo graph ."
+ok 98 - And the output must match "java,"
 # 
-ok 100 - Then analizo must report that "hello_world::hello_world_say(hello_world *)" depends on "hello_world::_hello_world::id"
+ok 99 - And the output must not match "I: Processed"
 # 
-ok 101 - And analizo must report that "hello_world::hello_world_destroy(hello_world *)" depends on "hello_world::_hello_world::id"
+# Scenario support for parallel processing
+ok 100 - Given I copy t/samples/hello_world/* into a temporary directory
 # 
-# Scenario intra-module dependencies
-ok 102 - Given I am in t/samples/hello_world/cpp
+ok 101 - When I run "analizo metrics-batch -q -o sequential.csv"
 # 
-ok 103 - When I run "analizo graph ."
+ok 102 - And I run "analizo metrics-batch -q -o parallel.csv -p 2"
 # 
-ok 104 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id"
+ok 103 - And I run "sort sequential.csv > sequential-sorted.csv"
 # 
-ok 105 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id"
+ok 104 - And I run "sort parallel.csv > parallel-sorted.csv"
 # 
-# Scenario intra-module dependencies
-ok 106 - Given I am in t/samples/hello_world/java
+ok 105 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv"
 # 
-ok 107 - When I run "analizo graph ."
+ok 106 - Then the output must not match "---"
 # 
-ok 108 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id"
+ok 107 - Then the exit status must be 0
 # 
-ok 109 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id"
+# Scenario passing two input directories as argument
+ok 108 - Given I copy t/samples/hello_world/* into a temporary directory
 # 
-# Scenario intra-module dependencies
-ok 110 - Given I am in t/samples/hello_world/csharp
+ok 109 - When I run "analizo metrics-batch --quiet -o data.csv cpp java"
 # 
-ok 111 - When I run "analizo graph ."
+ok 110 - Then the exit status must be 0
 # 
-ok 112 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id"
+ok 111 - And the file "c-details.csv" should not exist
 # 
-ok 113 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id"
+ok 112 - And the file "cpp-details.csv" should exist
 # 
-# Scenario some metrics
-ok 114 - Given I am in t/samples/hello_world/c
+ok 113 - And the file "java-details.csv" should exist
 # 
-ok 115 - When I run "analizo metrics ."
+# Scenario passing one input directory as argument
+ok 114 - Given I copy t/samples/hello_world/* into a temporary directory
 # 
-ok 116 - Then analizo must report that the project has total_modules = 2
+ok 115 - When I run "analizo metrics-batch --quiet -o data.csv cpp"
 # 
-ok 117 - And analizo must report that module main has nom = 1
+ok 116 - Then the exit status must be 0
 # 
-ok 118 - And analizo must report that module hello_world has npm = 3
+ok 117 - And the file "c-details.csv" should not exist
 # 
-ok 119 - And analizo must report that module hello_world has nom = 3
+ok 118 - And the file "cpp-details.csv" should exist
 # 
-ok 120 - And analizo must report that module hello_world has npa = 2
+ok 119 - And the file "java-details.csv" should not exist
 # 
-# Scenario some metrics
-ok 121 - Given I am in t/samples/hello_world/cpp
+# Feature tree evolution
+#  As a software engineering reasearcher I want to know what directories existed during the project lifetime So that I can analyze only the production code (and not tests etc)
+# Scenario sample git repository
+ok 120 - When I explode t/samples/tree-evolution.tar.gz
 # 
-ok 122 - When I run "analizo metrics ."
+ok 121 - And I run "analizo tree-evolution"
 # 
-ok 123 - Then analizo must report that the project has total_modules = 2
+ok 122 - Then the output lines must match "\# 073290fbad0254793bd3ecfb97654c04368d0039\\nsrc\\n\#"
 # 
-ok 124 - And analizo must report that module main has nom = 1
+ok 123 - Then the output lines must match "\# 85f7db08f7b7b0b62e3c0023b2743d529b0d5b4b\\nsrc\\nsrc/input\\n\#"
 # 
-ok 125 - And analizo must report that module HelloWorld has npm = 3
+ok 124 - Then the output lines must match "\# f41cf7d0351e812285efd60c6d957c330b1f61a1\\nsrc\\nsrc/input\\nsrc/output"
 # 
-ok 126 - And analizo must report that module HelloWorld has nom = 4
+# Feature exclude directories from the analysis
+#  As a software developer in a large project I want to exclude some directories from the source code analysis In order to not analyse non-production code such as tests
+# Scenario excluding test directory
+ok 125 - Given I am in t/samples/multidir/cpp
 # 
-ok 127 - And analizo must report that module HelloWorld has npa = 1
+ok 126 - When I run "analizo metrics --exclude test ."
 # 
-# Scenario some metrics
-ok 128 - Given I am in t/samples/hello_world/java
+ok 127 - Then the output must match "module: HelloWorld"
 # 
-ok 129 - When I run "analizo metrics ."
+ok 128 - And the output must not match "module: hello_test"
 # 
-ok 130 - Then analizo must report that the project has total_modules = 2
+# Scenario excluding test directory
+ok 129 - Given I am in t/samples/multidir/csharp
 # 
-ok 131 - And analizo must report that module Main has nom = 1
+ok 130 - When I run "analizo metrics --exclude test ."
 # 
-ok 132 - And analizo must report that module HelloWorld has npm = 3
+ok 131 - Then the output must match "module: HelloWorld"
 # 
-ok 133 - And analizo must report that module HelloWorld has nom = 4
+ok 132 - And the output must not match "module: hello_test"
 # 
-ok 134 - And analizo must report that module HelloWorld has npa = 1
+# Scenario excluding a list of directories
+ok 133 - Given I am in t/samples/multidir/cpp
 # 
-# Scenario some metrics
-ok 135 - Given I am in t/samples/hello_world/csharp
+ok 134 - When I run "analizo metrics --exclude test:src ."
 # 
-ok 136 - When I run "analizo metrics ."
+ok 135 - Then the output must not match "module: HelloWorld"
 # 
-ok 137 - Then analizo must report that the project has total_modules = 2
+ok 136 - And the output must not match "module: hello_test"
 # 
-ok 138 - And analizo must report that module main has nom = 1
+# Scenario excluding a list of directories
+ok 137 - Given I am in t/samples/multidir/csharp
 # 
-ok 139 - And analizo must report that module HelloWorld has npm = 3
+ok 138 - When I run "analizo metrics --exclude test:src ."
 # 
-ok 140 - And analizo must report that module HelloWorld has nom = 4
+ok 139 - Then the output must not match "module: HelloWorld"
 # 
-ok 141 - And analizo must report that module HelloWorld has npa = 1
+ok 140 - And the output must not match "module: hello_test"
 # 
-# Scenario inheritance data
-ok 142 - Given I am in t/samples/animals/cpp
+# Scenario excluding src directory
+ok 141 - Given I am in t/samples/multidir/cpp
 # 
-ok 143 - When I run "analizo graph --modules ."
+ok 142 - When I run "analizo metrics --exclude src ."
 # 
-ok 144 - Then analizo must report that "Cat" depends on "Mammal"
+ok 143 - Then the output must match "module: hello_test"
 # 
-ok 145 - And analizo must report that "Dog" depends on "Mammal"
+ok 144 - And the output must not match "module: HelloWorld"
 # 
-ok 146 - And analizo must report that "Mammal" depends on "Animal"
+# Scenario excluding src directory
+ok 145 - Given I am in t/samples/multidir/csharp
 # 
-ok 147 - When I run "analizo metrics ."
+ok 146 - When I run "analizo metrics --exclude src ."
 # 
-ok 148 - Then analizo must report that module Cat has dit = 2
+ok 147 - Then the output must match "module: hello_test"
 # 
-ok 149 - And analizo must report that module Dog has dit = 2
+ok 148 - And the output must not match "module: HelloWorld"
 # 
-ok 150 - And analizo must report that module Mammal has dit = 1
+# Feature c code with void argument
+#  As a software engineering reasearcher I want to know the arguments of each function on a project So that I can run analizo metrics calculate number of parameters
+# Scenario calculate anpn on function with void argument
+ok 149 - Given I am in t/samples/void/
 # 
-ok 151 - And analizo must report that module Animal has dit = 0
+ok 150 - When I run "analizo metrics ."
 # 
-# Scenario inheritance data
-ok 152 - Given I am in t/samples/animals/java
+ok 151 - Then analizo must report that module main has anpm = 0
 # 
-ok 153 - When I run "analizo graph --modules ."
+# Feature mapping modules to filenames
+#  As a software engineering resesearcher I want to know in which file each module is declared So that I can compare that with data from the VCS
+# Scenario C++, runing against some directory
+ok 152 - When I run "analizo metrics t/samples/animals/cpp"
 # 
-ok 154 - Then analizo must report that "Cat" depends on "Mammal"
+ok 153 - Then analizo must report that file animal.h declares module Animal
 # 
-ok 155 - And analizo must report that "Dog" depends on "Mammal"
+ok 154 - And analizo must report that file cat.cc declares module Cat
 # 
-ok 156 - And analizo must report that "Mammal" depends on "Animal"
+ok 155 - And analizo must report that file cat.h declares module Cat
 # 
-ok 157 - When I run "analizo metrics ."
+ok 156 - And analizo must report that file cat.cc not declares module Dog
 # 
-ok 158 - Then analizo must report that module Cat has dit = 2
+ok 157 - And analizo must report that file cat.h not declares module Dog
 # 
-ok 159 - And analizo must report that module Dog has dit = 2
+# Scenario C++, running against current directory
+ok 158 - Given I am in t/samples/animals/cpp
 # 
-ok 160 - And analizo must report that module Mammal has dit = 1
+ok 159 - When I run "analizo metrics ."
 # 
-ok 161 - And analizo must report that module Animal has dit = 0
+ok 160 - Then analizo must report that file animal.h declares module Animal
 # 
-# Scenario mixed Java and C
-ok 162 - Given I am in t/samples/mixed
+ok 161 - And analizo must report that file cat.cc declares module Cat
 # 
-ok 163 - When I run "analizo metrics ."
+ok 162 - And analizo must report that file cat.h declares module Cat
 # 
-ok 164 - Then the output must match "_module: native_backend"
+# Scenario Java
+ok 163 - When I run "analizo metrics t/samples/animals/java"
 # 
-ok 165 - And the output must match "_module: UI"
+ok 164 - Then analizo must report that file Animal.java declares module Animal
 # 
-ok 166 - And the output must match "_module: Backend"
+# Scenario C
+ok 165 - Given I am in t/samples/hello_world/c
 # 
-# Feature dependency graph among files
-#  As a software engineering reasearcher I want to know the all relationships between all files on project So that I can run analizo files-graph to produces a DOT graph from source-code
-# Scenario relation between function call
-ok 167 - Given I am in t/samples/animals/cpp
+ok 166 - When I run "analizo metrics ."
 # 
-ok 168 - When I run "analizo files-graph ."
+ok 167 - Then analizo must report that module hello_world has _filename = [hello_world.c,hello_world.h]
 # 
-ok 169 - Then analizo must report that "main" depends on "animal"
+ok 168 - And analizo must report that file hello_world.c declares module hello_world
 # 
-# Scenario relation between function call
-ok 170 - Given I am in t/samples/animals/java
+ok 169 - And analizo must report that file hello_world.h declares module hello_world
 # 
-ok 171 - When I run "analizo files-graph ."
+# Scenario CSharp hello_world
+ok 170 - Given I am in t/samples/hello_world/csharp
 # 
-ok 172 - Then analizo must report that "Main" depends on "Animal"
+ok 171 - When I run "analizo metrics ."
 # 
-# Scenario relation between function call
-ok 173 - Given I am in t/samples/animals/csharp
+ok 172 - Then analizo must report that module HelloWorld has _filename = [HelloWorld.cs]
 # 
-ok 174 - When I run "analizo files-graph ."
+# Scenario CSharp polygons
+ok 173 - Given I am in t/samples/polygons/csharp
 # 
-ok 175 - Then analizo must report that "Main" depends on "Animal"
+ok 174 - When I run "analizo metrics ."
 # 
-# Scenario relation between inheritance
-ok 176 - Given I am in t/samples/animals/cpp
+ok 175 - Then analizo must report that file Polygon.cs declares module Polygon
 # 
-ok 177 - When I run "analizo files-graph ."
+ok 176 - And analizo must report that file Rect.cs declares module Rect
 # 
-ok 178 - Then analizo must report that "dog" depends on "mammal"
+ok 177 - And analizo must report that file Triangle.cs declares module Triangle
 # 
-# Scenario relation between inheritance
-ok 179 - Given I am in t/samples/animals/java
+# Scenario Java Generics WildCard sample
+ok 178 - Given I am in t/samples/wildcard
 # 
-ok 180 - When I run "analizo files-graph ."
+ok 179 - When I run "analizo metrics ."
 # 
-ok 181 - Then analizo must report that "Dog" depends on "Mammal"
+ok 180 - Then analizo must report that file WildcardClass.java declares module WildcardClass
 # 
-# Scenario relation between inheritance
-ok 182 - Given I am in t/samples/animals/csharp
+ok 181 - And analizo must report that file GenericClass.java declares module GenericClass
 # 
-ok 183 - When I run "analizo files-graph ."
+# Scenario Java Enumeration sample
+ok 182 - Given I am in t/samples/enumeration
 # 
-ok 184 - Then analizo must report that "Dog" depends on "Mammal"
+ok 183 - When I run "analizo metrics ."
 # 
-# Scenario relation between inheritance
-ok 185 - Given I am in t/samples/animals/cpp
+ok 184 - Then analizo must report that file Main.java declares module Main::MyEnumeration
+# 
+ok 185 - And analizo must report that file Enumeration.java declares module Enumeration
+# 
+# Feature dependency graph among files
+#  As a software engineering reasearcher I want to know the all relationships between all files on project So that I can run analizo files-graph to produces a DOT graph from source-code
+# Scenario relation between function call
+ok 186 - Given I am in t/samples/animals/cpp
 # 
-ok 186 - When I run "analizo files-graph ."
+ok 187 - When I run "analizo files-graph ."
 # 
-ok 187 - Then analizo must report that "mammal" depends on "animal"
+ok 188 - Then analizo must report that "main" depends on "animal"
 # 
-# Scenario relation between inheritance
-ok 188 - Given I am in t/samples/animals/java
+# Scenario relation between function call
+ok 189 - Given I am in t/samples/animals/java
+# 
+ok 190 - When I run "analizo files-graph ."
 # 
-ok 189 - When I run "analizo files-graph ."
+ok 191 - Then analizo must report that "Main" depends on "Animal"
 # 
-ok 190 - Then analizo must report that "Mammal" depends on "Animal"
+# Scenario relation between function call
+ok 192 - Given I am in t/samples/animals/csharp
+# 
+ok 193 - When I run "analizo files-graph ."
+# 
+ok 194 - Then analizo must report that "Main" depends on "Animal"
 # 
 # Scenario relation between inheritance
-ok 191 - Given I am in t/samples/animals/csharp
+ok 195 - Given I am in t/samples/animals/cpp
 # 
-ok 192 - When I run "analizo files-graph ."
+ok 196 - When I run "analizo files-graph ."
 # 
-ok 193 - Then analizo must report that "Mammal" depends on "Animal"
+ok 197 - Then analizo must report that "dog" depends on "mammal"
 # 
-# Feature c code with void argument
-#  As a software engineering reasearcher I want to know the arguments of each function on a project So that I can run analizo metrics calculate number of parameters
-# Scenario calculate anpn on function with void argument
-ok 194 - Given I am in t/samples/void/
+# Scenario relation between inheritance
+ok 198 - Given I am in t/samples/animals/java
 # 
-ok 195 - When I run "analizo metrics ."
+ok 199 - When I run "analizo files-graph ."
 # 
-ok 196 - Then analizo must report that module main has anpm = 0
+ok 200 - Then analizo must report that "Dog" depends on "Mammal"
 # 
-# Feature metrics batch
-#  As a software engineering researcher I want to analyze several different projects So I can compare their metrics
-# Scenario "hello, world"
-ok 197 - Given I am in t/samples/hello_world/
+# Scenario relation between inheritance
+ok 201 - Given I am in t/samples/animals/csharp
 # 
-ok 198 - When I run "analizo metrics-batch"
+ok 202 - When I run "analizo files-graph ."
 # 
-ok 199 - Then the output must match "I: Processed c."
+ok 203 - Then analizo must report that "Dog" depends on "Mammal"
 # 
-ok 200 - And the output must match "I: Processed cpp."
+# Scenario relation between inheritance
+ok 204 - Given I am in t/samples/animals/cpp
 # 
-ok 201 - And the output must match "I: Processed java."
+ok 205 - When I run "analizo files-graph ."
 # 
-# Scenario summarizing
-ok 202 - Given I am in t/samples/hello_world/
+ok 206 - Then analizo must report that "mammal" depends on "animal"
 # 
-ok 203 - When I run "analizo metrics-batch --quiet -o data.csv && cat data.csv && rm -f *.csv"
+# Scenario relation between inheritance
+ok 207 - Given I am in t/samples/animals/java
 # 
-ok 204 - Then the output must match "^id,"
+ok 208 - When I run "analizo files-graph ."
 # 
-ok 205 - And the output must not match ",---,"
+ok 209 - Then analizo must report that "Mammal" depends on "Animal"
 # 
-ok 206 - And the output must match "c,"
+# Scenario relation between inheritance
+ok 210 - Given I am in t/samples/animals/csharp
 # 
-ok 207 - And the output must match "cpp,"
+ok 211 - When I run "analizo files-graph ."
 # 
-ok 208 - And the output must match "java,"
+ok 212 - Then analizo must report that "Mammal" depends on "Animal"
 # 
-ok 209 - And the output must not match "I: Processed"
+# Feature doxyparse extractor external tool
+#  As a Analizo developer I want to guarantee that doxyparse deal with any source code To provide reliability for Analizo users
+# Scenario don't die parsing MCLinker.cpp from android 5.1.1
+ok 213 - Given I am in t/samples/android-framework/android-5.1.1_r38
 # 
-# Scenario support for parallel processing
-ok 210 - Given I copy t/samples/hello_world/* into a temporary directory
+ok 214 - When I run "analizo metrics ."
 # 
-ok 211 - When I run "analizo metrics-batch -q -o sequential.csv"
+ok 215 - Then the exit status must be 0
 # 
-ok 212 - And I run "analizo metrics-batch -q -o parallel.csv -p 2"
+# Scenario don't duplicate YAML keys parsing AudioTrackShared.cpp from android 5.1.1
+ok 216 - Given I am in t/samples/android-framework/android-5.1.1_r38
 # 
-ok 213 - And I run "sort sequential.csv > sequential-sorted.csv"
+ok 217 - When I run "analizo metrics ."
 # 
-ok 214 - And I run "sort parallel.csv > parallel-sorted.csv"
+ok 218 - Then analizo must not emit a warning matching "YAML_LOAD_WARN_DUPLICATE_KEY"
 # 
-ok 215 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv"
+# Scenario don't abort parsing mlpack 3.0.0
+ok 219 - Given I am in t/samples/mlpack-3.0.0
 # 
-ok 216 - Then the output must not match "---"
+ok 220 - When I run "analizo metrics ."
 # 
-ok 217 - Then the exit status must be 0
+ok 221 - Then analizo must not emit a warning matching "Aborted"
 # 
-# Scenario passing two input directories as argument
-ok 218 - Given I copy t/samples/hello_world/* into a temporary directory
+ok 222 - And the exit status must be 0
 # 
-ok 219 - When I run "analizo metrics-batch --quiet -o data.csv cpp java"
+# Scenario don't die parsing kdelibs warning about unknown escape character
+ok 223 - Given I am in t/samples/kdelibs
 # 
-ok 220 - Then the exit status must be 0
+ok 224 - When I run "analizo metrics ."
 # 
-ok 221 - And the file "c-details.csv" should not exist
+ok 225 - Then analizo must not emit a warning matching "Error"
 # 
-ok 222 - And the file "cpp-details.csv" should exist
+ok 226 - And the exit status must be 0
 # 
-ok 223 - And the file "java-details.csv" should exist
+# Scenario don't die parsing mod_suexec.h from http 2.4.38
+ok 227 - Given I am in t/samples/httpd-2.4.38
 # 
-# Scenario passing one input directory as argument
-ok 224 - Given I copy t/samples/hello_world/* into a temporary directory
+ok 228 - When I run "analizo metrics ."
 # 
-ok 225 - When I run "analizo metrics-batch --quiet -o data.csv cpp"
+ok 229 - Then analizo must not emit a warning matching "Not a HASH reference"
 # 
-ok 226 - Then the exit status must be 0
+ok 230 - And the exit status must be 0
 # 
-ok 227 - And the file "c-details.csv" should not exist
+# Scenario allow dot on module filename
+ok 231 - Given I am in t/samples/sample_basic/c
 # 
-ok 228 - And the file "cpp-details.csv" should exist
+ok 232 - When I run "analizo metrics ."
 # 
-ok 229 - And the file "java-details.csv" should not exist
+ok 233 - Then analizo must report that file module1.c declares module module1
 # 
 # Feature loading command line options from .analizo
 #  As a analizo user I want to store command line options in a file called .analizo inside my project So that I don't need to alway pass all those options on the command line
 # Scenario analizo metrics
-ok 230 - Given I copy t/samples/mixed into a temporary directory
+ok 234 - Given I copy t/samples/mixed into a temporary directory
 # 
-ok 231 - And I create a file called .analizo with the following content
+ok 235 - And I create a file called .analizo with the following content
 # """metrics: --language java"""
-ok 232 - When I run "analizo metrics ."
+ok 236 - When I run "analizo metrics ."
 # 
-ok 233 - Then the output must not match "native_backend.c"
+ok 237 - Then the output must not match "native_backend.c"
 # 
-ok 234 - And the output must match "UI.java"
+ok 238 - And the output must match "UI.java"
 # 
-ok 235 - And the exit status must be 0
-# 
-# Scenario all others
-ok 236 - Given I change to an empty temporary directory
-# 
-ok 237 - And I create a file called .analizo with the following content
-# """<command>: --help"""
-ok 238 - When I run "analizo graph"
-# 
-ok 239 - Then the output must match "analizo graph is part of the analizo suite."
+ok 239 - And the exit status must be 0
 # 
 # Scenario all others
 ok 240 - Given I change to an empty temporary directory
 # 
 ok 241 - And I create a file called .analizo with the following content
 # """<command>: --help"""
-ok 242 - When I run "analizo metrics"
+ok 242 - When I run "analizo graph"
 # 
-ok 243 - Then the output must match "analizo metrics is part of the analizo suite."
+ok 243 - Then the output must match "analizo graph is part of the analizo suite."
 # 
 # Scenario all others
 ok 244 - Given I change to an empty temporary directory
 # 
 ok 245 - And I create a file called .analizo with the following content
 # """<command>: --help"""
-ok 246 - When I run "analizo metrics-batch"
+ok 246 - When I run "analizo metrics"
 # 
-ok 247 - Then the output must match "analizo metrics-batch is part of the analizo suite."
+ok 247 - Then the output must match "analizo metrics is part of the analizo suite."
 # 
 # Scenario all others
 ok 248 - Given I change to an empty temporary directory
 # 
 ok 249 - And I create a file called .analizo with the following content
 # """<command>: --help"""
-ok 250 - When I run "analizo metrics-history"
+ok 250 - When I run "analizo metrics-batch"
 # 
-ok 251 - Then the output must match "analizo metrics-history is part of the analizo suite."
+ok 251 - Then the output must match "analizo metrics-batch is part of the analizo suite."
 # 
 # Scenario all others
 ok 252 - Given I change to an empty temporary directory
 # 
 ok 253 - And I create a file called .analizo with the following content
 # """<command>: --help"""
-ok 254 - When I run "analizo tree-evolution"
+ok 254 - When I run "analizo metrics-history"
 # 
-ok 255 - Then the output must match "analizo tree-evolution is part of the analizo suite."
+ok 255 - Then the output must match "analizo metrics-history is part of the analizo suite."
 # 
 # Scenario all others
 ok 256 - Given I change to an empty temporary directory
 # 
 ok 257 - And I create a file called .analizo with the following content
 # """<command>: --help"""
-ok 258 - When I run "analizo files-graph"
+ok 258 - When I run "analizo tree-evolution"
 # 
-ok 259 - Then the output must match "analizo files-graph is part of the analizo suite."
+ok 259 - Then the output must match "analizo tree-evolution is part of the analizo suite."
 # 
 # Scenario all others
 ok 260 - Given I change to an empty temporary directory
 # 
 ok 261 - And I create a file called .analizo with the following content
 # """<command>: --help"""
-ok 262 - When I run "analizo help"
+ok 262 - When I run "analizo files-graph"
 # 
-ok 263 - Then the output must match "analizo help is part of the analizo suite."
+ok 263 - Then the output must match "analizo files-graph is part of the analizo suite."
 # 
-# Feature tree evolution
-#  As a software engineering reasearcher I want to know what directories existed during the project lifetime So that I can analyze only the production code (and not tests etc)
-# Scenario sample git repository
-ok 264 - When I explode t/samples/tree-evolution.tar.gz
-# 
-ok 265 - And I run "analizo tree-evolution"
+# Scenario all others
+ok 264 - Given I change to an empty temporary directory
 # 
-ok 266 - Then the output lines must match "\# 073290fbad0254793bd3ecfb97654c04368d0039\\nsrc\\n\#"
+ok 265 - And I create a file called .analizo with the following content
+# """<command>: --help"""
+ok 266 - When I run "analizo help"
 # 
-ok 267 - Then the output lines must match "\# 85f7db08f7b7b0b62e3c0023b2743d529b0d5b4b\\nsrc\\nsrc/input\\n\#"
+ok 267 - Then the output must match "analizo help is part of the analizo suite."
 # 
-ok 268 - Then the output lines must match "\# f41cf7d0351e812285efd60c6d957c330b1f61a1\\nsrc\\nsrc/input\\nsrc/output"
+# Feature multi-language support
+#  As a Researcher or Practioneer I want to be able to analyze software in different languages In order do compare them
+# Scenario dependency between modules
+ok 268 - Given I am in t/samples/hello_world/c
 # 
-# Feature give manpage on --help
-#  As a user I want to read the manpage when passing --help command line option In order to get instructions on how to use the tools
-# Scenario display manpage for `analizo graph`
-ok 269 - When I run "analizo graph --help"
+ok 269 - When I run "analizo graph --modules ."
 # 
-ok 270 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-graph"
+ok 270 - Then analizo must report that "main" depends on "hello_world"
 # 
-ok 271 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo graph \[OPTIONS\]"
+# Scenario dependency between modules
+ok 271 - Given I am in t/samples/hello_world/cpp
 # 
-# Scenario display manpage for `analizo metrics`
-ok 272 - When I run "analizo metrics --help"
+ok 272 - When I run "analizo graph --modules ."
 # 
-ok 273 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics"
+ok 273 - Then analizo must report that "main" depends on "HelloWorld"
 # 
-ok 274 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics \[OPTIONS\]"
+# Scenario dependency between modules
+ok 274 - Given I am in t/samples/hello_world/java
 # 
-# Scenario display manpage for `analizo metrics-batch`
-ok 275 - When I run "analizo metrics-batch --help"
+ok 275 - When I run "analizo graph --modules ."
 # 
-ok 276 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-batch"
+ok 276 - Then analizo must report that "Main" depends on "HelloWorld"
 # 
-ok 277 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-batch \[OPTIONS\]"
+# Scenario dependency between modules
+ok 277 - Given I am in t/samples/hello_world/csharp
 # 
-# Scenario display manpage for `analizo metrics-history`
-ok 278 - When I run "analizo metrics-history --help"
+ok 278 - When I run "analizo graph --modules ."
 # 
-ok 279 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-history"
+ok 279 - Then analizo must report that "main" depends on "HelloWorld"
 # 
-ok 280 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-history \[OPTIONS\]"
+# Scenario dependency between specific functions
+ok 280 - Given I am in t/samples/hello_world/c
 # 
-# Scenario display manpage for `analizo tree-evolution`
-ok 281 - When I run "analizo tree-evolution --help"
+ok 281 - When I run "analizo graph ."
 # 
-ok 282 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-tree-evolution"
+ok 282 - Then analizo must report that "main::main()" depends on "hello_world::hello_world_say(hello_world *)"
 # 
-ok 283 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo tree-evolution \[OPTIONS\]"
+ok 283 - And analizo must report that "main::main()" depends on "hello_world::hello_world_destroy(hello_world *)"
 # 
-# Scenario display manpage for `analizo files-graph`
-ok 284 - When I run "analizo files-graph --help"
+# Scenario dependency between specific functions
+ok 284 - Given I am in t/samples/hello_world/cpp
 # 
-ok 285 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-files-graph"
+ok 285 - When I run "analizo graph ."
 # 
-ok 286 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo files-graph \[OPTIONS\]"
+ok 286 - Then analizo must report that "main::main()" depends on "HelloWorld::say()"
 # 
-# Feature mapping modules to filenames
-#  As a software engineering resesearcher I want to know in which file each module is declared So that I can compare that with data from the VCS
-# Scenario C++, runing against some directory
-ok 287 - When I run "analizo metrics t/samples/animals/cpp"
+ok 287 - And analizo must report that "main::main()" depends on "HelloWorld::destroy()"
 # 
-ok 288 - Then analizo must report that file animal.h declares module Animal
+# Scenario dependency between specific functions
+ok 288 - Given I am in t/samples/hello_world/java
 # 
-ok 289 - And analizo must report that file cat.cc declares module Cat
+ok 289 - When I run "analizo graph ."
 # 
-ok 290 - And analizo must report that file cat.h declares module Cat
+ok 290 - Then analizo must report that "Main::main(String[])" depends on "HelloWorld::say()"
 # 
-ok 291 - And analizo must report that file cat.cc not declares module Dog
+ok 291 - And analizo must report that "Main::main(String[])" depends on "HelloWorld::destroy()"
 # 
-ok 292 - And analizo must report that file cat.h not declares module Dog
+# Scenario dependency between specific functions
+ok 292 - Given I am in t/samples/hello_world/csharp
 # 
-# Scenario C++, running against current directory
-ok 293 - Given I am in t/samples/animals/cpp
+ok 293 - When I run "analizo graph ."
 # 
-ok 294 - When I run "analizo metrics ."
+ok 294 - Then analizo must report that "main::Main()" depends on "HelloWorld::say()"
 # 
-ok 295 - Then analizo must report that file animal.h declares module Animal
+ok 295 - And analizo must report that "main::Main()" depends on "HelloWorld::destroy()"
 # 
-ok 296 - And analizo must report that file cat.cc declares module Cat
+# Scenario intra-module dependencies
+ok 296 - Given I am in t/samples/hello_world/c
 # 
-ok 297 - And analizo must report that file cat.h declares module Cat
+ok 297 - When I run "analizo graph ."
 # 
-# Scenario Java
-ok 298 - When I run "analizo metrics t/samples/animals/java"
+ok 298 - Then analizo must report that "hello_world::hello_world_say(hello_world *)" depends on "hello_world::_hello_world::id"
 # 
-ok 299 - Then analizo must report that file Animal.java declares module Animal
+ok 299 - And analizo must report that "hello_world::hello_world_destroy(hello_world *)" depends on "hello_world::_hello_world::id"
 # 
-# Scenario C
-ok 300 - Given I am in t/samples/hello_world/c
+# Scenario intra-module dependencies
+ok 300 - Given I am in t/samples/hello_world/cpp
 # 
-ok 301 - When I run "analizo metrics ."
+ok 301 - When I run "analizo graph ."
 # 
-ok 302 - Then analizo must report that module hello_world has _filename = [hello_world.c,hello_world.h]
+ok 302 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id"
 # 
-ok 303 - And analizo must report that file hello_world.c declares module hello_world
+ok 303 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id"
 # 
-ok 304 - And analizo must report that file hello_world.h declares module hello_world
+# Scenario intra-module dependencies
+ok 304 - Given I am in t/samples/hello_world/java
 # 
-# Scenario CSharp hello_world
-ok 305 - Given I am in t/samples/hello_world/csharp
+ok 305 - When I run "analizo graph ."
 # 
-ok 306 - When I run "analizo metrics ."
+ok 306 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id"
 # 
-ok 307 - Then analizo must report that module HelloWorld has _filename = [HelloWorld.cs]
+ok 307 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id"
 # 
-# Scenario CSharp polygons
-ok 308 - Given I am in t/samples/polygons/csharp
+# Scenario intra-module dependencies
+ok 308 - Given I am in t/samples/hello_world/csharp
 # 
-ok 309 - When I run "analizo metrics ."
+ok 309 - When I run "analizo graph ."
 # 
-ok 310 - Then analizo must report that file Polygon.cs declares module Polygon
+ok 310 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id"
 # 
-ok 311 - And analizo must report that file Rect.cs declares module Rect
+ok 311 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id"
 # 
-ok 312 - And analizo must report that file Triangle.cs declares module Triangle
+# Scenario some metrics
+ok 312 - Given I am in t/samples/hello_world/c
 # 
-# Scenario Java Generics WildCard sample
-ok 313 - Given I am in t/samples/wildcard
+ok 313 - When I run "analizo metrics ."
 # 
-ok 314 - When I run "analizo metrics ."
+ok 314 - Then analizo must report that the project has total_modules = 2
 # 
-ok 315 - Then analizo must report that file WildcardClass.java declares module WildcardClass
+ok 315 - And analizo must report that module main has nom = 1
 # 
-ok 316 - And analizo must report that file GenericClass.java declares module GenericClass
+ok 316 - And analizo must report that module hello_world has npm = 3
 # 
-# Scenario Java Enumeration sample
-ok 317 - Given I am in t/samples/enumeration
+ok 317 - And analizo must report that module hello_world has nom = 3
 # 
-ok 318 - When I run "analizo metrics ."
+ok 318 - And analizo must report that module hello_world has npa = 2
 # 
-ok 319 - Then analizo must report that file Main.java declares module Main::MyEnumeration
+# Scenario some metrics
+ok 319 - Given I am in t/samples/hello_world/cpp
 # 
-ok 320 - And analizo must report that file Enumeration.java declares module Enumeration
+ok 320 - When I run "analizo metrics ."
 # 
-# Feature analizo metrics-history
-#  As a software engineering researcher I want to analyse the entire history of a project To understand its development process
-# Scenario listing merge commits with code changes that should be analyzed
-ok 321 - When I explode t/samples/evolution.tar.gz
+ok 321 - Then analizo must report that the project has total_modules = 2
 # 
-ok 322 - And I run "analizo metrics-history --list ."
+ok 322 - And analizo must report that module main has nom = 1
 # 
-ok 323 - Then the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed"
+ok 323 - And analizo must report that module HelloWorld has npm = 3
 # 
-ok 324 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e"
+ok 324 - And analizo must report that module HelloWorld has nom = 4
 # 
-ok 325 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce"
+ok 325 - And analizo must report that module HelloWorld has npa = 1
 # 
-ok 326 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53"
+# Scenario some metrics
+ok 326 - Given I am in t/samples/hello_world/java
 # 
-ok 327 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00"
+ok 327 - When I run "analizo metrics ."
 # 
-ok 328 - And the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad"
+ok 328 - Then analizo must report that the project has total_modules = 2
 # 
-# Scenario non-code commits should not be analyzed
-ok 329 - When I explode t/samples/evolution.tar.gz
+ok 329 - And analizo must report that module Main has nom = 1
 # 
-ok 330 - And I run "analizo metrics-history --list ."
+ok 330 - And analizo must report that module HelloWorld has npm = 3
 # 
-ok 331 - Then the output must not match "ba62278e976944c0334103aa0044535169e1a51e"
+ok 331 - And analizo must report that module HelloWorld has nom = 4
 # 
-# Scenario merge commits without code change should not be analyzed
-ok 332 - When I explode t/samples/evolution.tar.gz
+ok 332 - And analizo must report that module HelloWorld has npa = 1
 # 
-ok 333 - And I run "analizo metrics-history --list ."
+# Scenario some metrics
+ok 333 - Given I am in t/samples/hello_world/csharp
 # 
-ok 334 - Then the output must not match "0fdaaa7dcc8073332a957024fafc8c98f165e725"
+ok 334 - When I run "analizo metrics ."
 # 
-# Scenario actually processing merge commits
-ok 335 - When I explode t/samples/evolution.tar.gz
+ok 335 - Then analizo must report that the project has total_modules = 2
 # 
-ok 336 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv"
+ok 336 - And analizo must report that module main has nom = 1
 # 
-ok 337 - Then the output must match "^id,previous_commit_id,author_date,author_name,author_email,.*,sc_mean"
+ok 337 - And analizo must report that module HelloWorld has npm = 3
 # 
-ok 338 - And the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed,eb67c27055293e835049b58d7d73ce3664d3f90e"
+ok 338 - And analizo must report that module HelloWorld has nom = 4
 # 
-ok 339 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e,,"
+ok 339 - And analizo must report that module HelloWorld has npa = 1
 # 
-ok 340 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00"
+# Scenario inheritance data
+ok 340 - Given I am in t/samples/animals/cpp
 # 
-ok 341 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00"
+ok 341 - When I run "analizo graph --modules ."
 # 
-ok 342 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00,0d3c023120ad4e9f519a03fff275d048c52671ad"
+ok 342 - Then analizo must report that "Cat" depends on "Mammal"
 # 
-# Scenario actually processing initial commit and first commit after a non-relevant merge
-ok 343 - When I explode t/samples/evolution.tar.gz
+ok 343 - And analizo must report that "Dog" depends on "Mammal"
 # 
-ok 344 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv"
+ok 344 - And analizo must report that "Mammal" depends on "Animal"
 # 
-ok 345 - Then the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad,,"
+ok 345 - When I run "analizo metrics ."
 # 
-ok 346 - And the output must match "8183eafad3a0f3eff6e8869f1bdbfd255e86825a,0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed"
+ok 346 - Then analizo must report that module Cat has dit = 2
 # 
-# Scenario support for parallel processing
-ok 347 - Given I copy t/samples/evolution.tar.gz into a temporary directory
+ok 347 - And analizo must report that module Dog has dit = 2
 # 
-ok 348 - When I run "tar xzf evolution.tar.gz"
+ok 348 - And analizo must report that module Mammal has dit = 1
 # 
-ok 349 - And I run "cd evolution && analizo metrics-history -o ../sequential.csv"
+ok 349 - And analizo must report that module Animal has dit = 0
 # 
-ok 350 - And I run "cd evolution && analizo metrics-history -p 2 -o ../parallel.csv"
+# Scenario inheritance data
+ok 350 - Given I am in t/samples/animals/java
 # 
-ok 351 - Then the exit status must be 0
+ok 351 - When I run "analizo graph --modules ."
 # 
-ok 352 - When I run "sort sequential.csv > sequential-sorted.csv"
+ok 352 - Then analizo must report that "Cat" depends on "Mammal"
 # 
-ok 353 - And I run "sort parallel.csv > parallel-sorted.csv"
+ok 353 - And analizo must report that "Dog" depends on "Mammal"
 # 
-ok 354 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv"
+ok 354 - And analizo must report that "Mammal" depends on "Animal"
 # 
-ok 355 - Then the output must not match "---"
+ok 355 - When I run "analizo metrics ."
 # 
-ok 356 - And the exit status must be 0
+ok 356 - Then analizo must report that module Cat has dit = 2
 # 
-# Scenario parsing git log format containing renamed files among status of changed files
-ok 357 - Given I copy t/samples/evolution.tar.gz into a temporary directory
+ok 357 - And analizo must report that module Dog has dit = 2
 # 
-ok 358 - When I run "tar xzf evolution.tar.gz"
+ok 358 - And analizo must report that module Mammal has dit = 1
 # 
-ok 359 - And I run "cd evolution && git checkout doc && analizo metrics-history ."
+ok 359 - And analizo must report that module Animal has dit = 0
 # 
-ok 360 - Then the exit status must be 0
+# Scenario mixed Java and C
+ok 360 - Given I am in t/samples/mixed
 # 
-# Scenario language filters
-ok 361 - Given I copy t/samples/mixed into a temporary directory
+ok 361 - When I run "analizo metrics ."
 # 
-ok 362 - When I run "(cd mixed && git init && git add * && git commit -m 'initial commit')"
+ok 362 - Then the output must match "_module: native_backend"
 # 
-ok 363 - And I run "analizo metrics-history --language java mixed"
+ok 363 - And the output must match "_module: UI"
 # 
-ok 364 - Then the output must not match "native_backend.c"
+ok 364 - And the output must match "_module: Backend"
 # 
-# Feature input files for graph tool
-# Scenario passing specific files in the command line
-ok 365 - Given I am in t/samples/sample_basic/c
+# Feature number of methods
+#  As a software developer I want analizo to report the number of methods of each module So that I can evaluate it
+# Scenario number of methods of the polygon java sample
+ok 365 - Given I am in t/samples/polygons/cpp
 # 
-ok 366 - When I run "analizo graph module1.c module2.c"
+ok 366 - When I run "analizo metrics ."
 # 
-ok 367 - Then the output must match "module1"
+ok 367 - Then analizo must report that module CPolygon has nom = 3
 # 
-ok 368 - And the output must match "module2"
+# Scenario number of methods of the polygon java sample
+ok 368 - Given I am in t/samples/polygons/cpp
 # 
-ok 369 - And the output must not match "module3"
+ok 369 - When I run "analizo metrics ."
 # 
-# Scenario passing unexisting file
-ok 370 - Given I am in t/samples/sample_basic/c
+ok 370 - Then analizo must report that module CTetragon has nom = 2
 # 
-ok 371 - When I run "analizo graph unexisting-file.c"
+# Scenario number of methods of the polygon java sample
+ok 371 - Given I am in t/samples/polygons/java
 # 
-ok 372 - Then analizo must emit a warning matching "is not readable"
+ok 372 - When I run "analizo metrics ."
 # 
-# Feature clustering subroutines in the same module together
-# Scenario clustering dependencies
-ok 373 - Given I am in t/samples/sample_basic/c/
+ok 373 - Then analizo must report that module Polygon has nom = 3
 # 
-ok 374 - When I run "analizo graph --cluster ."
+# Scenario number of methods of the polygon java sample
+ok 374 - Given I am in t/samples/polygons/csharp
 # 
-ok 375 - Then analizo must report that "module1::main()" is part of "module1"
+ok 375 - When I run "analizo metrics ."
 # 
-ok 376 - Then analizo must report that "module2::say_hello()" is part of "module2"
+ok 376 - Then analizo must report that module Polygon has nom = 2
 # 
-ok 377 - Then analizo must report that "module2::say_bye()" is part of "module2"
+# Scenario number of methods of the polygon java sample
+ok 377 - Given I am in t/samples/polygons/csharp
 # 
-ok 378 - Then analizo must report that "module3::variable" is part of "module3"
+ok 378 - When I run "analizo metrics ."
 # 
-ok 379 - Then analizo must report that "module3::callback()" is part of "module3"
+ok 379 - Then analizo must report that module Tetragon has nom = 2
 # 
-# Feature plain analizo graph run
-# Scenario simply running analizo
-ok 380 - Given I am in t/samples/sample_basic/c/
+# Scenario number of methods of the polygon java sample
+ok 380 - Given I am in t/samples/animals/cpp
 # 
-ok 381 - When I run "analizo graph ."
+ok 381 - When I run "analizo metrics ."
 # 
-ok 382 - Then analizo must report that "module1::main()" depends on "module3::variable"
+ok 382 - Then analizo must report that module Animal has nom = 1
 # 
-ok 383 - Then analizo must report that "module1::main()" depends on "module3::callback()"
+# Scenario number of methods of the polygon java sample
+ok 383 - Given I am in t/samples/animals/cpp
 # 
-ok 384 - Then analizo must report that "module1::main()" depends on "module2::say_bye()"
+ok 384 - When I run "analizo metrics ."
 # 
-ok 385 - Then analizo must report that "module1::main()" depends on "module2::say_hello()"
+ok 385 - Then analizo must report that module Cat has nom = 2
 # 
-ok 386 - And the exit status must be 0
+# Scenario number of methods of the polygon java sample
+ok 386 - Given I am in t/samples/animals/cpp
 # 
-# Feature output file for graph tool
-# Scenario passing output file in the command line
-ok 387 - Given I am in .
+ok 387 - When I run "analizo metrics ."
 # 
-ok 388 - When I run "analizo graph --output output.dot.tmp t/samples/sample_basic/c/"
+ok 388 - Then analizo must report that module Dog has nom = 2
 # 
-ok 389 - Then the contents of "output.dot.tmp" must match "module1"
+# Scenario number of methods of the polygon java sample
+ok 389 - Given I am in t/samples/animals/java
 # 
-ok 390 - And the exit status must be 0
+ok 390 - When I run "analizo metrics ."
 # 
-# Scenario passing output file in an unexisting directory
-ok 391 - Given I am in .
+ok 391 - Then analizo must report that module Animal has nom = 1
 # 
-ok 392 - When I run "analizo graph --output /this/directory/must/not/exists/output.dot t/samples/sample_basic/c/"
+# Scenario number of methods of the polygon java sample
+ok 392 - Given I am in t/samples/animals/java
 # 
-ok 393 - Then analizo must emit a warning matching "No such file or directory"
+ok 393 - When I run "analizo metrics ."
 # 
-ok 394 - And the exit status must not be 0
+ok 394 - Then analizo must report that module Cat has nom = 2
 # 
-# Scenario passing output file without permission to write
-ok 395 - Given I am in .
+# Scenario number of methods of the polygon java sample
+ok 395 - Given I am in t/samples/animals/java
 # 
-ok 396 - When I run "touch output.tmp"
+ok 396 - When I run "analizo metrics ."
 # 
-ok 397 - And I run "chmod 000 output.tmp"
+ok 397 - Then analizo must report that module Dog has nom = 2
 # 
-ok 398 - And I run "analizo graph --output output.tmp t/samples/sample_basic/c/"
+# Scenario number of methods of the polygon java sample
+ok 398 - Given I am in t/samples/animals/csharp
 # 
-ok 399 - Then the exit status must not be 0
+ok 399 - When I run "analizo metrics ."
 # 
-ok 400 - And analizo must emit a warning matching "Permission denied"
+ok 400 - Then analizo must report that module Animal has nom = 1
 # 
-# Feature omitting certain modules
-# Scenario omitting say_bye
-ok 401 - Given I am in t/samples/sample_basic/
+# Scenario number of methods of the polygon java sample
+ok 401 - Given I am in t/samples/animals/csharp
 # 
-ok 402 - When I run "analizo graph --omit 'module2::say_bye()' ."
+ok 402 - When I run "analizo metrics ."
 # 
-ok 403 - Then the output must not match "module2::say_bye()"
+ok 403 - Then analizo must report that module Cat has nom = 2
 # 
-# Scenario omitting two functions
-ok 404 - Given I am in t/samples/sample_basic/
+# Scenario number of methods of the polygon java sample
+ok 404 - Given I am in t/samples/animals/csharp
 # 
-ok 405 - When I run "analizo graph --omit 'module2::say_bye()','module2::say_hello()' ."
+ok 405 - When I run "analizo metrics ."
 # 
-ok 406 - Then the output must not match "module2::say_bye()"
+ok 406 - Then analizo must report that module Dog has nom = 2
 # 
-ok 407 - Then the output must not match "module2::say_hello()"
+# Scenario not computes macro on C code as method definition
+ok 407 - Given I am in t/samples/macro
 # 
-# Scenario omitting depending functions
-ok 408 - Given I am in t/samples/sample_basic/
+ok 408 - When I run "analizo metrics ."
 # 
-ok 409 - When I run "analizo graph --omit 'module1::main()' ."
+ok 409 - Then analizo must report that module using_macro has nom = 1
 # 
-ok 410 - Then the output must not match "module1::main()"
+# Feature language filters
+#  As a software developer in a multi-language project I want to analyze only one programming language So that the results are as correct as possible
+# Scenario filtering for C code
+ok 410 - Given I am in t/samples/mixed
 # 
-# Feature group by modules
-# Scenario sample project
-ok 411 - Given I am in t/samples/sample_basic/c/
+ok 411 - When I run "analizo metrics --language c ."
 # 
-ok 412 - When I run "analizo graph --modules ."
+ok 412 - Then the output must match "native_backend"
 # 
-ok 413 - Then analizo must report that "module1" depends on "module2"
+ok 413 - And the output must not match "UI"
 # 
-ok 414 - Then analizo must report that "module1" depends on "module3"
+ok 414 - And the output must not match "Backend"
 # 
-# Feature functions calls
-# Scenario detect function calls among classes
-ok 415 - Given I am in t/samples/animals/cpp
+ok 415 - And the output must not match "CSharp_Backend"
 # 
-ok 416 - When I run "analizo graph ."
+# Scenario filtering for Java code
+ok 416 - Given I am in t/samples/mixed
 # 
-ok 417 - Then analizo must report that "Cat::Cat(char *)" depends on "Cat::_name"
+ok 417 - When I run "analizo metrics --language java ."
 # 
-ok 418 - And analizo must not report that "Cat::Cat(char *)" depends on "Cat::name()"
+ok 418 - Then the output must match "UI"
 # 
-ok 419 - And the exit status must be 0
+ok 419 - And the output must match "Backend"
 # 
-# Feature displaying version
-# Scenario running without any arguments
-ok 420 - When I run "analizo graph"
+ok 420 - And the output must not match "native_backend"
 # 
-ok 421 - Then analizo must emit a warning matching "Usage:"
+ok 421 - And the output must not match "CSharp_Backend"
 # 
-ok 422 - And the exit status must not be 0
+# Scenario filtering for CSharp code
+ok 422 - Given I am in t/samples/mixed
 # 
-# Feature number of abstract classes
-#  As a software developer I want analizo to report the number of modules with at least a defined method in my code So that I can evaluate it
-# Scenario "Hello, world" project
-ok 423 - Given I am in t/samples/hello_world/cpp
+ok 423 - When I run "analizo metrics --language csharp ."
 # 
-ok 424 - When I run "analizo metrics ."
+ok 424 - Then the output must match "CSharp_Backend"
 # 
-ok 425 - Then analizo must report that the project has total_modules_with_defined_methods = 2
+ok 425 - And the output must not match "UI"
 # 
-# Scenario "Hello, world" project
-ok 426 - Given I am in t/samples/hello_world/java
+ok 426 - And the output must not match "native_backend"
 # 
-ok 427 - When I run "analizo metrics ."
+# Scenario listing languages
+ok 427 - When I run "analizo metrics --language list"
 # 
-ok 428 - Then analizo must report that the project has total_modules_with_defined_methods = 2
+ok 428 - Then analizo must present a list of languages
 # 
+# Feature number of abstract classes
+#  As a software developer I want analizo to report the number of abstract classes in my code So that I can evaluate it
 # Scenario "Hello, world" project
-ok 429 - Given I am in t/samples/hello_world/csharp
+ok 429 - Given I am in t/samples/hello_world/cpp
 # 
 ok 430 - When I run "analizo metrics ."
 # 
-ok 431 - Then analizo must report that the project has total_modules_with_defined_methods = 2
+ok 431 - Then analizo must report that the project has total_abstract_classes = 0
 # 
-# Scenario "Animals" project
-ok 432 - Given I am in t/samples/animals/cpp
+# Scenario "Hello, world" project
+ok 432 - Given I am in t/samples/hello_world/java
 # 
 ok 433 - When I run "analizo metrics ."
 # 
-ok 434 - Then analizo must report that the project has total_modules_with_defined_methods = 5
+ok 434 - Then analizo must report that the project has total_abstract_classes = 0
 # 
-# Scenario "Animals" project
-ok 435 - Given I am in t/samples/animals/java
+# Scenario "Hello, world" project
+ok 435 - Given I am in t/samples/hello_world/csharp
 # 
 ok 436 - When I run "analizo metrics ."
 # 
-ok 437 - Then analizo must report that the project has total_modules_with_defined_methods = 5
+ok 437 - Then analizo must report that the project has total_abstract_classes = 0
 # 
 # Scenario "Animals" project
-ok 438 - Given I am in t/samples/animals/csharp
+ok 438 - Given I am in t/samples/animals/cpp
 # 
 ok 439 - When I run "analizo metrics ."
 # 
-ok 440 - Then analizo must report that the project has total_modules_with_defined_methods = 5
+ok 440 - Then analizo must report that the project has total_abstract_classes = 2
 # 
-# Feature number of public methods metric
-#  As a software developer I want to calculate the number of public methods per module metric So that I can evaluate my code
-# Scenario number of attributes in the "Animals" project
-ok 441 - Given I am in t/samples/polygons/cpp
+# Scenario "Animals" project
+ok 441 - Given I am in t/samples/animals/java
 # 
 ok 442 - When I run "analizo metrics ."
 # 
-ok 443 - Then analizo must report that module CPolygon has npm = 2
+ok 443 - Then analizo must report that the project has total_abstract_classes = 2
 # 
-# Scenario number of attributes in the "Animals" project
-ok 444 - Given I am in t/samples/polygons/cpp
+# Scenario "Animals" project
+ok 444 - Given I am in t/samples/animals/csharp
 # 
 ok 445 - When I run "analizo metrics ."
 # 
-ok 446 - Then analizo must report that module CTetragon has npm = 1
+ok 446 - Then analizo must report that the project has total_abstract_classes = 2
 # 
-# Scenario number of attributes in the "Animals" project
-ok 447 - Given I am in t/samples/polygons/java
+# Scenario "Polygons" project
+ok 447 - Given I am in t/samples/polygons/cpp
 # 
 ok 448 - When I run "analizo metrics ."
 # 
-ok 449 - Then analizo must report that module Polygon has npm = 3
+ok 449 - Then analizo must report that the project has total_abstract_classes = 2
 # 
-# Scenario number of attributes in the "Animals" project
-ok 450 - Given I am in t/samples/polygons/csharp
+# Scenario "Polygons" project
+ok 450 - Given I am in t/samples/polygons/java
 # 
 ok 451 - When I run "analizo metrics ."
 # 
-ok 452 - Then analizo must report that module Polygon has npm = 2
+ok 452 - Then analizo must report that the project has total_abstract_classes = 2
 # 
-# Scenario number of attributes in the "Animals" project
-ok 453 - Given I am in t/samples/animals/cpp
+# Scenario "Polygons" project
+ok 453 - Given I am in t/samples/polygons/csharp
 # 
 ok 454 - When I run "analizo metrics ."
 # 
-ok 455 - Then analizo must report that module Animal has npm = 1
+ok 455 - Then analizo must report that the project has total_abstract_classes = 2
 # 
-# Scenario number of attributes in the "Animals" project
-ok 456 - Given I am in t/samples/animals/cpp
+# Scenario "AbstractClass" project
+ok 456 - Given I am in t/samples/abstract_class/java
 # 
 ok 457 - When I run "analizo metrics ."
 # 
-ok 458 - Then analizo must report that module Cat has npm = 2
+ok 458 - Then analizo must report that the project has total_abstract_classes = 1
 # 
-# Scenario number of attributes in the "Animals" project
-ok 459 - Given I am in t/samples/animals/cpp
+ok 459 - And analizo must report that the project has total_methods_per_abstract_class = 6
 # 
-ok 460 - When I run "analizo metrics ."
+# Scenario "AbstractClass" project
+ok 460 - Given I am in t/samples/abstract_class/csharp
 # 
-ok 461 - Then analizo must report that module Dog has npm = 2
+ok 461 - When I run "analizo metrics ."
 # 
-# Scenario number of attributes in the "Animals" project
-ok 462 - Given I am in t/samples/animals/java
+ok 462 - Then analizo must report that the project has total_abstract_classes = 1
 # 
-ok 463 - When I run "analizo metrics ."
+ok 463 - And analizo must report that the project has total_methods_per_abstract_class = 1
 # 
-ok 464 - Then analizo must report that module Animal has npm = 1
+# Feature number of abstract classes
+#  As a software developer I want analizo to report the number of modules with at least a defined method in my code So that I can evaluate it
+# Scenario "Hello, world" project
+ok 464 - Given I am in t/samples/hello_world/cpp
 # 
-# Scenario number of attributes in the "Animals" project
-ok 465 - Given I am in t/samples/animals/java
+ok 465 - When I run "analizo metrics ."
 # 
-ok 466 - When I run "analizo metrics ."
+ok 466 - Then analizo must report that the project has total_modules_with_defined_attributes = 1
 # 
-ok 467 - Then analizo must report that module Cat has npm = 2
+# Scenario "Hello, world" project
+ok 467 - Given I am in t/samples/hello_world/java
 # 
-# Scenario number of attributes in the "Animals" project
-ok 468 - Given I am in t/samples/animals/java
+ok 468 - When I run "analizo metrics ."
 # 
-ok 469 - When I run "analizo metrics ."
+ok 469 - Then analizo must report that the project has total_modules_with_defined_attributes = 1
 # 
-ok 470 - Then analizo must report that module Dog has npm = 2
+# Scenario "Hello, world" project
+ok 470 - Given I am in t/samples/hello_world/csharp
 # 
-# Scenario number of attributes in the "Animals" project
-ok 471 - Given I am in t/samples/animals/csharp
+ok 471 - When I run "analizo metrics ."
 # 
-ok 472 - When I run "analizo metrics ."
+ok 472 - Then analizo must report that the project has total_modules_with_defined_attributes = 1
 # 
-ok 473 - Then analizo must report that module Animal has npm = 1
+# Scenario "Animals" project
+ok 473 - Given I am in t/samples/animals/cpp
 # 
-# Scenario number of attributes in the "Animals" project
-ok 474 - Given I am in t/samples/animals/csharp
+ok 474 - When I run "analizo metrics ."
 # 
-ok 475 - When I run "analizo metrics ."
+ok 475 - Then analizo must report that the project has total_modules_with_defined_attributes = 2
 # 
-ok 476 - Then analizo must report that module Cat has npm = 2
+# Scenario "Animals" project
+ok 476 - Given I am in t/samples/animals/java
 # 
-# Scenario number of attributes in the "Animals" project
-ok 477 - Given I am in t/samples/animals/csharp
+ok 477 - When I run "analizo metrics ."
 # 
-ok 478 - When I run "analizo metrics ."
+ok 478 - Then analizo must report that the project has total_modules_with_defined_attributes = 2
 # 
-ok 479 - Then analizo must report that module Dog has npm = 2
+# Scenario "Animals" project
+ok 479 - Given I am in t/samples/animals/csharp
 # 
-# Feature number of attributes metric
-#  As a software developer I want to calculate the number of attributes per module metric So that I can evaluate my code
-# Scenario number of attributes in the "Animals" project
-ok 480 - Given I am in t/samples/animals/cpp
+ok 480 - When I run "analizo metrics ."
 # 
-ok 481 - When I run "analizo metrics ."
+ok 481 - Then analizo must report that the project has total_modules_with_defined_attributes = 2
 # 
-ok 482 - Then analizo must report that module Dog has noa = 1
+# Feature total number of methods per abstract class
+#  As a software developer I want analizo to report the number of abstract classes in my code So that I can evaluate it
+# Scenario "Hello, world" project
+ok 482 - Given I am in t/samples/hello_world/cpp
 # 
-ok 483 - And analizo must report that module Cat has noa = 1
+ok 483 - When I run "analizo metrics ."
 # 
-ok 484 - And analizo must report that module main has noa = 0
+ok 484 - Then analizo must report that the project has total_methods_per_abstract_class = 0
 # 
-# Scenario number of attributes in the "Animals" project
-ok 485 - Given I am in t/samples/animals/java
+# Scenario "Hello, world" project
+ok 485 - Given I am in t/samples/hello_world/java
 # 
 ok 486 - When I run "analizo metrics ."
 # 
-ok 487 - Then analizo must report that module Dog has noa = 1
-# 
-ok 488 - And analizo must report that module Cat has noa = 1
+ok 487 - Then analizo must report that the project has total_methods_per_abstract_class = 0
 # 
-ok 489 - And analizo must report that module Main has noa = 0
+# Scenario "Hello, world" project
+ok 488 - Given I am in t/samples/hello_world/csharp
 # 
-# Scenario number of attributes in the "Animals" project
-ok 490 - Given I am in t/samples/animals/csharp
+ok 489 - When I run "analizo metrics ."
 # 
-ok 491 - When I run "analizo metrics ."
+ok 490 - Then analizo must report that the project has total_methods_per_abstract_class = 0
 # 
-ok 492 - Then analizo must report that module Dog has noa = 1
+# Scenario "Animals" project
+ok 491 - Given I am in t/samples/animals/cpp
 # 
-ok 493 - And analizo must report that module Cat has noa = 1
+ok 492 - When I run "analizo metrics ."
 # 
-ok 494 - And analizo must report that module main has noa = 0
+ok 493 - Then analizo must report that the project has total_methods_per_abstract_class = 1
 # 
-# Feature afferent connections with deep inheritance
-#  As a software developer I want analizo to report the afferent connections of each module So that I can evaluate it
-# Scenario afferent connections of the dog family java sample
-ok 495 - Given I am in t/samples/deep_inheritance/java
-# 
-ok 496 - When I run "analizo metrics ."
+# Scenario "Animals" project
+ok 494 - Given I am in t/samples/animals/java
 # 
-ok 497 - Then analizo must report that module Dog has acc = 7
+ok 495 - When I run "analizo metrics ."
 # 
-# Scenario afferent connections of the dog family java sample
-ok 498 - Given I am in t/samples/deep_inheritance/java
+ok 496 - Then analizo must report that the project has total_methods_per_abstract_class = 1
 # 
-ok 499 - When I run "analizo metrics ."
+# Scenario "Animals" project
+ok 497 - Given I am in t/samples/animals/csharp
 # 
-ok 500 - Then analizo must report that module DogFirstGreatGrandson has acc = 1
+ok 498 - When I run "analizo metrics ."
 # 
-# Scenario afferent connections of the dog family java sample
-ok 501 - Given I am in t/samples/deep_inheritance/java
+ok 499 - Then analizo must report that the project has total_methods_per_abstract_class = 1
 # 
-ok 502 - When I run "analizo metrics ."
+# Scenario "Polygons" project
+ok 500 - Given I am in t/samples/polygons/cpp
 # 
-ok 503 - Then analizo must report that module DogFirstPuppy has acc = 4
+ok 501 - When I run "analizo metrics ."
 # 
-# Scenario afferent connections of the dog family java sample
-ok 504 - Given I am in t/samples/deep_inheritance/java
+ok 502 - Then analizo must report that the project has total_methods_per_abstract_class = 2.5
 # 
-ok 505 - When I run "analizo metrics ."
+# Scenario "Polygons" project
+ok 503 - Given I am in t/samples/polygons/java
 # 
-ok 506 - Then analizo must report that module DogGrandson has acc = 3
+ok 504 - When I run "analizo metrics ."
 # 
-# Scenario afferent connections of the dog family java sample
-ok 507 - Given I am in t/samples/deep_inheritance/java
+ok 505 - Then analizo must report that the project has total_methods_per_abstract_class = 2
 # 
-ok 508 - When I run "analizo metrics ."
+# Scenario "Polygons" project
+ok 506 - Given I am in t/samples/polygons/csharp
 # 
-ok 509 - Then analizo must report that module DogSecondGreatGrandson has acc = 0
+ok 507 - When I run "analizo metrics ."
 # 
-# Scenario afferent connections of the dog family java sample
-ok 510 - Given I am in t/samples/deep_inheritance/java
+ok 508 - Then analizo must report that the project has total_methods_per_abstract_class = 2
 # 
-ok 511 - When I run "analizo metrics ."
+# Feature output file for metrics tool
+# Scenario passing output file in the command line
+ok 509 - Given I am in .
 # 
-ok 512 - Then analizo must report that module DogSecondPuppy has acc = 0
+ok 510 - When I run "analizo metrics --output output.yml.tmp t/samples/sample_basic/"
 # 
-# Scenario afferent connections of the dog family java sample
-ok 513 - Given I am in t/samples/deep_inheritance/java
+ok 511 - Then the contents of "output.yml.tmp" must match "module2"
 # 
-ok 514 - When I run "analizo metrics ."
+ok 512 - And the exit status must be 0
 # 
-ok 515 - Then analizo must report that module DogSuperYoung has acc = 0
+# Scenario passing output file without permission to write
+ok 513 - Given I am in .
 # 
-# Scenario afferent connections of the dog family java sample
-ok 516 - Given I am in t/samples/deep_inheritance/java
+ok 514 - When I run "touch output.tmp"
 # 
-ok 517 - When I run "analizo metrics ."
+ok 515 - And I run "chmod 000 output.tmp"
 # 
-ok 518 - Then analizo must report that module Human has acc = 2
+ok 516 - And I run "analizo metrics --output output.tmp t/samples/sample_basic/"
 # 
-# Scenario afferent connections of the dog family java sample
-ok 519 - Given I am in t/samples/deep_inheritance/java
+ok 517 - Then the exit status must not be 0
 # 
-ok 520 - When I run "analizo metrics ."
+ok 518 - And analizo must emit a warning matching "Permission denied"
 # 
-ok 521 - Then analizo must report that module ShopController has acc = 0
+# Scenario passing output file in an unexisting directory
+ok 519 - Given I am in .
 # 
-# Scenario afferent connections of the dog family java sample
-ok 522 - Given I am in t/samples/deep_inheritance/java
+ok 520 - When I run "analizo metrics --output /this/directory/must/not/exists/output.yml t/samples"
 # 
-ok 523 - When I run "analizo metrics ."
+ok 521 - Then the exit status must not be 0
 # 
-ok 524 - Then analizo must report that module VenderShop has acc = 1
+ok 522 - And analizo must emit a warning matching "No such file or directory"
 # 
-# Feature total number of methods per abstract class
-#  As a software developer I want analizo to report the number of abstract classes in my code So that I can evaluate it
+# Feature output statistics values of metrics
+#  As a researcher I want to ouput statistics values of metrics So that I can evaluate a project at once
 # Scenario "Hello, world" project
-ok 525 - Given I am in t/samples/hello_world/cpp
+ok 523 - Given I am in t/samples/hello_world/
 # 
-ok 526 - When I run "analizo metrics ."
+ok 524 - When I run "analizo metrics ."
 # 
-ok 527 - Then analizo must report that the project has total_methods_per_abstract_class = 0
+ok 525 - Then the output must match "acc_mean:"
 # 
-# Scenario "Hello, world" project
-ok 528 - Given I am in t/samples/hello_world/java
+ok 526 - Then the output must match "acc_mode:"
 # 
-ok 529 - When I run "analizo metrics ."
+ok 527 - Then the output must match "acc_standard_deviation:"
 # 
-ok 530 - Then analizo must report that the project has total_methods_per_abstract_class = 0
+ok 528 - Then the output must match "acc_sum:"
 # 
-# Scenario "Hello, world" project
-ok 531 - Given I am in t/samples/hello_world/csharp
+ok 529 - Then the output must match "acc_variance:"
 # 
-ok 532 - When I run "analizo metrics ."
+ok 530 - Then the output must match "acc_quantile_min:"
 # 
-ok 533 - Then analizo must report that the project has total_methods_per_abstract_class = 0
+ok 531 - Then the output must match "acc_quantile_lower:"
 # 
-# Scenario "Animals" project
-ok 534 - Given I am in t/samples/animals/cpp
+ok 532 - Then the output must match "acc_quantile_median:"
 # 
-ok 535 - When I run "analizo metrics ."
+ok 533 - Then the output must match "acc_quantile_upper:"
 # 
-ok 536 - Then analizo must report that the project has total_methods_per_abstract_class = 1
+ok 534 - Then the output must match "acc_quantile_max:"
 # 
-# Scenario "Animals" project
-ok 537 - Given I am in t/samples/animals/java
+ok 535 - Then the output must match "acc_kurtosis:"
 # 
-ok 538 - When I run "analizo metrics ."
+ok 536 - Then the output must match "acc_skewness:"
 # 
-ok 539 - Then analizo must report that the project has total_methods_per_abstract_class = 1
+# Scenario "Hello, world" project
+ok 537 - Given I am in t/samples/hello_world/
 # 
-# Scenario "Animals" project
-ok 540 - Given I am in t/samples/animals/csharp
+ok 538 - When I run "analizo metrics ."
 # 
-ok 541 - When I run "analizo metrics ."
+ok 539 - Then the output must match "accm_mean:"
 # 
-ok 542 - Then analizo must report that the project has total_methods_per_abstract_class = 1
+ok 540 - Then the output must match "accm_mode:"
 # 
-# Scenario "Polygons" project
-ok 543 - Given I am in t/samples/polygons/cpp
+ok 541 - Then the output must match "accm_standard_deviation:"
 # 
-ok 544 - When I run "analizo metrics ."
+ok 542 - Then the output must match "accm_sum:"
 # 
-ok 545 - Then analizo must report that the project has total_methods_per_abstract_class = 2.5
+ok 543 - Then the output must match "accm_variance:"
 # 
-# Scenario "Polygons" project
-ok 546 - Given I am in t/samples/polygons/java
+ok 544 - Then the output must match "accm_quantile_min:"
 # 
-ok 547 - When I run "analizo metrics ."
+ok 545 - Then the output must match "accm_quantile_lower:"
 # 
-ok 548 - Then analizo must report that the project has total_methods_per_abstract_class = 2
+ok 546 - Then the output must match "accm_quantile_median:"
 # 
-# Scenario "Polygons" project
-ok 549 - Given I am in t/samples/polygons/csharp
+ok 547 - Then the output must match "accm_quantile_upper:"
 # 
-ok 550 - When I run "analizo metrics ."
+ok 548 - Then the output must match "accm_quantile_max:"
 # 
-ok 551 - Then analizo must report that the project has total_methods_per_abstract_class = 2
+ok 549 - Then the output must match "accm_kurtosis:"
 # 
-# Feature average number of parameters metric
-#  As a software developer I want to calculate the average number of arguments per method metric So that I can evaluate my code
-# Scenario number of parameters in the "Animals" project
-ok 552 - Given I am in t/samples/animals/cpp
+ok 550 - Then the output must match "accm_skewness:"
 # 
-ok 553 - When I run "analizo metrics ."
+# Scenario "Hello, world" project
+ok 551 - Given I am in t/samples/hello_world/
 # 
-ok 554 - Then analizo must report that module Dog has anpm = 0.5
+ok 552 - When I run "analizo metrics ."
 # 
-ok 555 - And analizo must report that module Cat has anpm = 0.5
+ok 553 - Then the output must match "amloc_mean:"
 # 
-ok 556 - And analizo must report that module main has anpm = 0
+ok 554 - Then the output must match "amloc_mode:"
 # 
-# Scenario number of parameters in the "Animals" project
-ok 557 - Given I am in t/samples/animals/java
+ok 555 - Then the output must match "amloc_standard_deviation:"
 # 
-ok 558 - When I run "analizo metrics ."
+ok 556 - Then the output must match "amloc_sum:"
 # 
-ok 559 - Then analizo must report that module Dog has anpm = 0.5
+ok 557 - Then the output must match "amloc_variance:"
 # 
-ok 560 - And analizo must report that module Cat has anpm = 0.5
+ok 558 - Then the output must match "amloc_quantile_min:"
 # 
-ok 561 - And analizo must report that module Main has anpm = 1
+ok 559 - Then the output must match "amloc_quantile_lower:"
 # 
-# Scenario number of parameters in the "Animals" project
-ok 562 - Given I am in t/samples/animals/csharp
+ok 560 - Then the output must match "amloc_quantile_median:"
 # 
-ok 563 - When I run "analizo metrics ."
+ok 561 - Then the output must match "amloc_quantile_upper:"
 # 
-ok 564 - Then analizo must report that module Dog has anpm = 0.5
+ok 562 - Then the output must match "amloc_quantile_max:"
 # 
-ok 565 - And analizo must report that module Cat has anpm = 0.5
+ok 563 - Then the output must match "amloc_kurtosis:"
 # 
-ok 566 - And analizo must report that module main has anpm = 1
+ok 564 - Then the output must match "amloc_skewness:"
 # 
-# Feature output file for metrics tool
-# Scenario passing output file in the command line
-ok 567 - Given I am in .
+# Scenario "Hello, world" project
+ok 565 - Given I am in t/samples/hello_world/
 # 
-ok 568 - When I run "analizo metrics --output output.yml.tmp t/samples/sample_basic/"
+ok 566 - When I run "analizo metrics ."
 # 
-ok 569 - Then the contents of "output.yml.tmp" must match "module2"
+ok 567 - Then the output must match "anpm_mean:"
 # 
-ok 570 - And the exit status must be 0
+ok 568 - Then the output must match "anpm_mode:"
 # 
-# Scenario passing output file without permission to write
-ok 571 - Given I am in .
+ok 569 - Then the output must match "anpm_standard_deviation:"
 # 
-ok 572 - When I run "touch output.tmp"
+ok 570 - Then the output must match "anpm_sum:"
 # 
-ok 573 - And I run "chmod 000 output.tmp"
+ok 571 - Then the output must match "anpm_variance:"
 # 
-ok 574 - And I run "analizo metrics --output output.tmp t/samples/sample_basic/"
+ok 572 - Then the output must match "anpm_quantile_min:"
 # 
-ok 575 - Then the exit status must not be 0
+ok 573 - Then the output must match "anpm_quantile_lower:"
 # 
-ok 576 - And analizo must emit a warning matching "Permission denied"
+ok 574 - Then the output must match "anpm_quantile_median:"
 # 
-# Scenario passing output file in an unexisting directory
-ok 577 - Given I am in .
+ok 575 - Then the output must match "anpm_quantile_upper:"
 # 
-ok 578 - When I run "analizo metrics --output /this/directory/must/not/exists/output.yml t/samples"
+ok 576 - Then the output must match "anpm_quantile_max:"
 # 
-ok 579 - Then the exit status must not be 0
+ok 577 - Then the output must match "anpm_kurtosis:"
 # 
-ok 580 - And analizo must emit a warning matching "No such file or directory"
+ok 578 - Then the output must match "anpm_skewness:"
 # 
-# Feature output statistics values of metrics
-#  As a researcher I want to ouput statistics values of metrics So that I can evaluate a project at once
 # Scenario "Hello, world" project
-ok 581 - Given I am in t/samples/hello_world/
+ok 579 - Given I am in t/samples/hello_world/
 # 
-ok 582 - When I run "analizo metrics ."
+ok 580 - When I run "analizo metrics ."
 # 
-ok 583 - Then the output must match "acc_mean:"
+ok 581 - Then the output must match "cbo_mean:"
 # 
-ok 584 - Then the output must match "acc_mode:"
+ok 582 - Then the output must match "cbo_mode:"
 # 
-ok 585 - Then the output must match "acc_standard_deviation:"
+ok 583 - Then the output must match "cbo_standard_deviation:"
 # 
-ok 586 - Then the output must match "acc_sum:"
+ok 584 - Then the output must match "cbo_sum:"
 # 
-ok 587 - Then the output must match "acc_variance:"
+ok 585 - Then the output must match "cbo_variance:"
 # 
-ok 588 - Then the output must match "acc_quantile_min:"
+ok 586 - Then the output must match "cbo_quantile_min:"
 # 
-ok 589 - Then the output must match "acc_quantile_lower:"
+ok 587 - Then the output must match "cbo_quantile_lower:"
 # 
-ok 590 - Then the output must match "acc_quantile_median:"
+ok 588 - Then the output must match "cbo_quantile_median:"
 # 
-ok 591 - Then the output must match "acc_quantile_upper:"
+ok 589 - Then the output must match "cbo_quantile_upper:"
 # 
-ok 592 - Then the output must match "acc_quantile_max:"
+ok 590 - Then the output must match "cbo_quantile_max:"
 # 
-ok 593 - Then the output must match "acc_kurtosis:"
+ok 591 - Then the output must match "cbo_kurtosis:"
 # 
-ok 594 - Then the output must match "acc_skewness:"
+ok 592 - Then the output must match "cbo_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 595 - Given I am in t/samples/hello_world/
+ok 593 - Given I am in t/samples/hello_world/
 # 
-ok 596 - When I run "analizo metrics ."
+ok 594 - When I run "analizo metrics ."
 # 
-ok 597 - Then the output must match "accm_mean:"
+ok 595 - Then the output must match "dit_mean:"
 # 
-ok 598 - Then the output must match "accm_mode:"
+ok 596 - Then the output must match "dit_mode:"
 # 
-ok 599 - Then the output must match "accm_standard_deviation:"
+ok 597 - Then the output must match "dit_standard_deviation:"
 # 
-ok 600 - Then the output must match "accm_sum:"
+ok 598 - Then the output must match "dit_sum:"
 # 
-ok 601 - Then the output must match "accm_variance:"
+ok 599 - Then the output must match "dit_variance:"
 # 
-ok 602 - Then the output must match "accm_quantile_min:"
+ok 600 - Then the output must match "dit_quantile_min:"
 # 
-ok 603 - Then the output must match "accm_quantile_lower:"
+ok 601 - Then the output must match "dit_quantile_lower:"
 # 
-ok 604 - Then the output must match "accm_quantile_median:"
+ok 602 - Then the output must match "dit_quantile_median:"
 # 
-ok 605 - Then the output must match "accm_quantile_upper:"
+ok 603 - Then the output must match "dit_quantile_upper:"
 # 
-ok 606 - Then the output must match "accm_quantile_max:"
+ok 604 - Then the output must match "dit_quantile_max:"
 # 
-ok 607 - Then the output must match "accm_kurtosis:"
+ok 605 - Then the output must match "dit_kurtosis:"
 # 
-ok 608 - Then the output must match "accm_skewness:"
+ok 606 - Then the output must match "dit_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 609 - Given I am in t/samples/hello_world/
+ok 607 - Given I am in t/samples/hello_world/
 # 
-ok 610 - When I run "analizo metrics ."
+ok 608 - When I run "analizo metrics ."
 # 
-ok 611 - Then the output must match "amloc_mean:"
+ok 609 - Then the output must match "lcom4_mean:"
 # 
-ok 612 - Then the output must match "amloc_mode:"
+ok 610 - Then the output must match "lcom4_mode:"
 # 
-ok 613 - Then the output must match "amloc_standard_deviation:"
+ok 611 - Then the output must match "lcom4_standard_deviation:"
 # 
-ok 614 - Then the output must match "amloc_sum:"
+ok 612 - Then the output must match "lcom4_sum:"
 # 
-ok 615 - Then the output must match "amloc_variance:"
+ok 613 - Then the output must match "lcom4_variance:"
 # 
-ok 616 - Then the output must match "amloc_quantile_min:"
+ok 614 - Then the output must match "lcom4_quantile_min:"
 # 
-ok 617 - Then the output must match "amloc_quantile_lower:"
+ok 615 - Then the output must match "lcom4_quantile_lower:"
 # 
-ok 618 - Then the output must match "amloc_quantile_median:"
+ok 616 - Then the output must match "lcom4_quantile_median:"
 # 
-ok 619 - Then the output must match "amloc_quantile_upper:"
+ok 617 - Then the output must match "lcom4_quantile_upper:"
 # 
-ok 620 - Then the output must match "amloc_quantile_max:"
+ok 618 - Then the output must match "lcom4_quantile_max:"
 # 
-ok 621 - Then the output must match "amloc_kurtosis:"
+ok 619 - Then the output must match "lcom4_kurtosis:"
 # 
-ok 622 - Then the output must match "amloc_skewness:"
+ok 620 - Then the output must match "lcom4_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 623 - Given I am in t/samples/hello_world/
+ok 621 - Given I am in t/samples/hello_world/
 # 
-ok 624 - When I run "analizo metrics ."
+ok 622 - When I run "analizo metrics ."
 # 
-ok 625 - Then the output must match "anpm_mean:"
+ok 623 - Then the output must match "loc_mean:"
 # 
-ok 626 - Then the output must match "anpm_mode:"
+ok 624 - Then the output must match "loc_mode:"
 # 
-ok 627 - Then the output must match "anpm_standard_deviation:"
+ok 625 - Then the output must match "loc_standard_deviation:"
 # 
-ok 628 - Then the output must match "anpm_sum:"
+ok 626 - Then the output must match "loc_sum:"
 # 
-ok 629 - Then the output must match "anpm_variance:"
+ok 627 - Then the output must match "loc_variance:"
 # 
-ok 630 - Then the output must match "anpm_quantile_min:"
+ok 628 - Then the output must match "loc_quantile_min:"
 # 
-ok 631 - Then the output must match "anpm_quantile_lower:"
+ok 629 - Then the output must match "loc_quantile_lower:"
 # 
-ok 632 - Then the output must match "anpm_quantile_median:"
+ok 630 - Then the output must match "loc_quantile_median:"
 # 
-ok 633 - Then the output must match "anpm_quantile_upper:"
+ok 631 - Then the output must match "loc_quantile_upper:"
 # 
-ok 634 - Then the output must match "anpm_quantile_max:"
+ok 632 - Then the output must match "loc_quantile_max:"
 # 
-ok 635 - Then the output must match "anpm_kurtosis:"
+ok 633 - Then the output must match "loc_kurtosis:"
 # 
-ok 636 - Then the output must match "anpm_skewness:"
+ok 634 - Then the output must match "loc_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 637 - Given I am in t/samples/hello_world/
+ok 635 - Given I am in t/samples/hello_world/
 # 
-ok 638 - When I run "analizo metrics ."
+ok 636 - When I run "analizo metrics ."
 # 
-ok 639 - Then the output must match "cbo_mean:"
+ok 637 - Then the output must match "mmloc_mean:"
 # 
-ok 640 - Then the output must match "cbo_mode:"
+ok 638 - Then the output must match "mmloc_mode:"
 # 
-ok 641 - Then the output must match "cbo_standard_deviation:"
+ok 639 - Then the output must match "mmloc_standard_deviation:"
 # 
-ok 642 - Then the output must match "cbo_sum:"
+ok 640 - Then the output must match "mmloc_sum:"
 # 
-ok 643 - Then the output must match "cbo_variance:"
+ok 641 - Then the output must match "mmloc_variance:"
 # 
-ok 644 - Then the output must match "cbo_quantile_min:"
+ok 642 - Then the output must match "mmloc_quantile_min:"
 # 
-ok 645 - Then the output must match "cbo_quantile_lower:"
+ok 643 - Then the output must match "mmloc_quantile_lower:"
 # 
-ok 646 - Then the output must match "cbo_quantile_median:"
+ok 644 - Then the output must match "mmloc_quantile_median:"
 # 
-ok 647 - Then the output must match "cbo_quantile_upper:"
+ok 645 - Then the output must match "mmloc_quantile_upper:"
 # 
-ok 648 - Then the output must match "cbo_quantile_max:"
+ok 646 - Then the output must match "mmloc_quantile_max:"
 # 
-ok 649 - Then the output must match "cbo_kurtosis:"
+ok 647 - Then the output must match "mmloc_kurtosis:"
 # 
-ok 650 - Then the output must match "cbo_skewness:"
+ok 648 - Then the output must match "mmloc_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 651 - Given I am in t/samples/hello_world/
+ok 649 - Given I am in t/samples/hello_world/
 # 
-ok 652 - When I run "analizo metrics ."
+ok 650 - When I run "analizo metrics ."
 # 
-ok 653 - Then the output must match "dit_mean:"
+ok 651 - Then the output must match "noa_mean:"
 # 
-ok 654 - Then the output must match "dit_mode:"
+ok 652 - Then the output must match "noa_mode:"
 # 
-ok 655 - Then the output must match "dit_standard_deviation:"
+ok 653 - Then the output must match "noa_standard_deviation:"
 # 
-ok 656 - Then the output must match "dit_sum:"
+ok 654 - Then the output must match "noa_sum:"
 # 
-ok 657 - Then the output must match "dit_variance:"
+ok 655 - Then the output must match "noa_variance:"
 # 
-ok 658 - Then the output must match "dit_quantile_min:"
+ok 656 - Then the output must match "noa_quantile_min:"
 # 
-ok 659 - Then the output must match "dit_quantile_lower:"
+ok 657 - Then the output must match "noa_quantile_lower:"
 # 
-ok 660 - Then the output must match "dit_quantile_median:"
+ok 658 - Then the output must match "noa_quantile_median:"
 # 
-ok 661 - Then the output must match "dit_quantile_upper:"
+ok 659 - Then the output must match "noa_quantile_upper:"
 # 
-ok 662 - Then the output must match "dit_quantile_max:"
+ok 660 - Then the output must match "noa_quantile_max:"
 # 
-ok 663 - Then the output must match "dit_kurtosis:"
+ok 661 - Then the output must match "noa_kurtosis:"
 # 
-ok 664 - Then the output must match "dit_skewness:"
+ok 662 - Then the output must match "noa_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 665 - Given I am in t/samples/hello_world/
+ok 663 - Given I am in t/samples/hello_world/
 # 
-ok 666 - When I run "analizo metrics ."
+ok 664 - When I run "analizo metrics ."
 # 
-ok 667 - Then the output must match "lcom4_mean:"
+ok 665 - Then the output must match "noc_mean:"
 # 
-ok 668 - Then the output must match "lcom4_mode:"
+ok 666 - Then the output must match "noc_mode:"
 # 
-ok 669 - Then the output must match "lcom4_standard_deviation:"
+ok 667 - Then the output must match "noc_standard_deviation:"
 # 
-ok 670 - Then the output must match "lcom4_sum:"
+ok 668 - Then the output must match "noc_sum:"
 # 
-ok 671 - Then the output must match "lcom4_variance:"
+ok 669 - Then the output must match "noc_variance:"
 # 
-ok 672 - Then the output must match "lcom4_quantile_min:"
+ok 670 - Then the output must match "noc_quantile_min:"
 # 
-ok 673 - Then the output must match "lcom4_quantile_lower:"
+ok 671 - Then the output must match "noc_quantile_lower:"
 # 
-ok 674 - Then the output must match "lcom4_quantile_median:"
+ok 672 - Then the output must match "noc_quantile_median:"
 # 
-ok 675 - Then the output must match "lcom4_quantile_upper:"
+ok 673 - Then the output must match "noc_quantile_upper:"
 # 
-ok 676 - Then the output must match "lcom4_quantile_max:"
+ok 674 - Then the output must match "noc_quantile_max:"
 # 
-ok 677 - Then the output must match "lcom4_kurtosis:"
+ok 675 - Then the output must match "noc_kurtosis:"
 # 
-ok 678 - Then the output must match "lcom4_skewness:"
+ok 676 - Then the output must match "noc_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 679 - Given I am in t/samples/hello_world/
+ok 677 - Given I am in t/samples/hello_world/
 # 
-ok 680 - When I run "analizo metrics ."
+ok 678 - When I run "analizo metrics ."
 # 
-ok 681 - Then the output must match "loc_mean:"
+ok 679 - Then the output must match "nom_mean:"
 # 
-ok 682 - Then the output must match "loc_mode:"
+ok 680 - Then the output must match "nom_mode:"
 # 
-ok 683 - Then the output must match "loc_standard_deviation:"
+ok 681 - Then the output must match "nom_standard_deviation:"
 # 
-ok 684 - Then the output must match "loc_sum:"
+ok 682 - Then the output must match "nom_sum:"
 # 
-ok 685 - Then the output must match "loc_variance:"
+ok 683 - Then the output must match "nom_variance:"
 # 
-ok 686 - Then the output must match "loc_quantile_min:"
+ok 684 - Then the output must match "nom_quantile_min:"
 # 
-ok 687 - Then the output must match "loc_quantile_lower:"
+ok 685 - Then the output must match "nom_quantile_lower:"
 # 
-ok 688 - Then the output must match "loc_quantile_median:"
+ok 686 - Then the output must match "nom_quantile_median:"
 # 
-ok 689 - Then the output must match "loc_quantile_upper:"
+ok 687 - Then the output must match "nom_quantile_upper:"
 # 
-ok 690 - Then the output must match "loc_quantile_max:"
+ok 688 - Then the output must match "nom_quantile_max:"
 # 
-ok 691 - Then the output must match "loc_kurtosis:"
+ok 689 - Then the output must match "nom_kurtosis:"
 # 
-ok 692 - Then the output must match "loc_skewness:"
+ok 690 - Then the output must match "nom_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 693 - Given I am in t/samples/hello_world/
+ok 691 - Given I am in t/samples/hello_world/
 # 
-ok 694 - When I run "analizo metrics ."
+ok 692 - When I run "analizo metrics ."
 # 
-ok 695 - Then the output must match "mmloc_mean:"
+ok 693 - Then the output must match "npm_mean:"
 # 
-ok 696 - Then the output must match "mmloc_mode:"
+ok 694 - Then the output must match "npm_mode:"
 # 
-ok 697 - Then the output must match "mmloc_standard_deviation:"
+ok 695 - Then the output must match "npm_standard_deviation:"
 # 
-ok 698 - Then the output must match "mmloc_sum:"
+ok 696 - Then the output must match "npm_sum:"
 # 
-ok 699 - Then the output must match "mmloc_variance:"
+ok 697 - Then the output must match "npm_variance:"
 # 
-ok 700 - Then the output must match "mmloc_quantile_min:"
+ok 698 - Then the output must match "npm_quantile_min:"
 # 
-ok 701 - Then the output must match "mmloc_quantile_lower:"
+ok 699 - Then the output must match "npm_quantile_lower:"
 # 
-ok 702 - Then the output must match "mmloc_quantile_median:"
+ok 700 - Then the output must match "npm_quantile_median:"
 # 
-ok 703 - Then the output must match "mmloc_quantile_upper:"
+ok 701 - Then the output must match "npm_quantile_upper:"
 # 
-ok 704 - Then the output must match "mmloc_quantile_max:"
+ok 702 - Then the output must match "npm_quantile_max:"
 # 
-ok 705 - Then the output must match "mmloc_kurtosis:"
+ok 703 - Then the output must match "npm_kurtosis:"
 # 
-ok 706 - Then the output must match "mmloc_skewness:"
+ok 704 - Then the output must match "npm_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 707 - Given I am in t/samples/hello_world/
+ok 705 - Given I am in t/samples/hello_world/
 # 
-ok 708 - When I run "analizo metrics ."
+ok 706 - When I run "analizo metrics ."
 # 
-ok 709 - Then the output must match "noa_mean:"
+ok 707 - Then the output must match "npa_mean:"
 # 
-ok 710 - Then the output must match "noa_mode:"
+ok 708 - Then the output must match "npa_mode:"
 # 
-ok 711 - Then the output must match "noa_standard_deviation:"
+ok 709 - Then the output must match "npa_standard_deviation:"
 # 
-ok 712 - Then the output must match "noa_sum:"
+ok 710 - Then the output must match "npa_sum:"
 # 
-ok 713 - Then the output must match "noa_variance:"
+ok 711 - Then the output must match "npa_variance:"
 # 
-ok 714 - Then the output must match "noa_quantile_min:"
+ok 712 - Then the output must match "npa_quantile_min:"
 # 
-ok 715 - Then the output must match "noa_quantile_lower:"
+ok 713 - Then the output must match "npa_quantile_lower:"
 # 
-ok 716 - Then the output must match "noa_quantile_median:"
+ok 714 - Then the output must match "npa_quantile_median:"
 # 
-ok 717 - Then the output must match "noa_quantile_upper:"
+ok 715 - Then the output must match "npa_quantile_upper:"
 # 
-ok 718 - Then the output must match "noa_quantile_max:"
+ok 716 - Then the output must match "npa_quantile_max:"
 # 
-ok 719 - Then the output must match "noa_kurtosis:"
+ok 717 - Then the output must match "npa_kurtosis:"
 # 
-ok 720 - Then the output must match "noa_skewness:"
+ok 718 - Then the output must match "npa_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 721 - Given I am in t/samples/hello_world/
+ok 719 - Given I am in t/samples/hello_world/
 # 
-ok 722 - When I run "analizo metrics ."
+ok 720 - When I run "analizo metrics ."
 # 
-ok 723 - Then the output must match "noc_mean:"
+ok 721 - Then the output must match "rfc_mean:"
 # 
-ok 724 - Then the output must match "noc_mode:"
+ok 722 - Then the output must match "rfc_mode:"
 # 
-ok 725 - Then the output must match "noc_standard_deviation:"
+ok 723 - Then the output must match "rfc_standard_deviation:"
 # 
-ok 726 - Then the output must match "noc_sum:"
+ok 724 - Then the output must match "rfc_sum:"
 # 
-ok 727 - Then the output must match "noc_variance:"
+ok 725 - Then the output must match "rfc_variance:"
 # 
-ok 728 - Then the output must match "noc_quantile_min:"
+ok 726 - Then the output must match "rfc_quantile_min:"
 # 
-ok 729 - Then the output must match "noc_quantile_lower:"
+ok 727 - Then the output must match "rfc_quantile_lower:"
 # 
-ok 730 - Then the output must match "noc_quantile_median:"
+ok 728 - Then the output must match "rfc_quantile_median:"
 # 
-ok 731 - Then the output must match "noc_quantile_upper:"
+ok 729 - Then the output must match "rfc_quantile_upper:"
 # 
-ok 732 - Then the output must match "noc_quantile_max:"
+ok 730 - Then the output must match "rfc_quantile_max:"
 # 
-ok 733 - Then the output must match "noc_kurtosis:"
+ok 731 - Then the output must match "rfc_kurtosis:"
 # 
-ok 734 - Then the output must match "noc_skewness:"
+ok 732 - Then the output must match "rfc_skewness:"
 # 
 # Scenario "Hello, world" project
-ok 735 - Given I am in t/samples/hello_world/
+ok 733 - Given I am in t/samples/hello_world/
 # 
-ok 736 - When I run "analizo metrics ."
+ok 734 - When I run "analizo metrics ."
 # 
-ok 737 - Then the output must match "nom_mean:"
+ok 735 - Then the output must match "sc_mean:"
 # 
-ok 738 - Then the output must match "nom_mode:"
+ok 736 - Then the output must match "sc_mode:"
 # 
-ok 739 - Then the output must match "nom_standard_deviation:"
+ok 737 - Then the output must match "sc_standard_deviation:"
 # 
-ok 740 - Then the output must match "nom_sum:"
+ok 738 - Then the output must match "sc_sum:"
 # 
-ok 741 - Then the output must match "nom_variance:"
+ok 739 - Then the output must match "sc_variance:"
 # 
-ok 742 - Then the output must match "nom_quantile_min:"
+ok 740 - Then the output must match "sc_quantile_min:"
 # 
-ok 743 - Then the output must match "nom_quantile_lower:"
+ok 741 - Then the output must match "sc_quantile_lower:"
 # 
-ok 744 - Then the output must match "nom_quantile_median:"
+ok 742 - Then the output must match "sc_quantile_median:"
 # 
-ok 745 - Then the output must match "nom_quantile_upper:"
+ok 743 - Then the output must match "sc_quantile_upper:"
 # 
-ok 746 - Then the output must match "nom_quantile_max:"
+ok 744 - Then the output must match "sc_quantile_max:"
 # 
-ok 747 - Then the output must match "nom_kurtosis:"
+ok 745 - Then the output must match "sc_kurtosis:"
 # 
-ok 748 - Then the output must match "nom_skewness:"
+ok 746 - Then the output must match "sc_skewness:"
 # 
-# Scenario "Hello, world" project
-ok 749 - Given I am in t/samples/hello_world/
+# Feature number of public methods metric
+#  As a software developer I want to calculate the number of public methods per module metric So that I can evaluate my code
+# Scenario number of attributes in the "Animals" project
+ok 747 - Given I am in t/samples/polygons/cpp
 # 
-ok 750 - When I run "analizo metrics ."
+ok 748 - When I run "analizo metrics ."
 # 
-ok 751 - Then the output must match "npm_mean:"
+ok 749 - Then analizo must report that module CPolygon has npm = 2
 # 
-ok 752 - Then the output must match "npm_mode:"
+# Scenario number of attributes in the "Animals" project
+ok 750 - Given I am in t/samples/polygons/cpp
 # 
-ok 753 - Then the output must match "npm_standard_deviation:"
+ok 751 - When I run "analizo metrics ."
 # 
-ok 754 - Then the output must match "npm_sum:"
+ok 752 - Then analizo must report that module CTetragon has npm = 1
 # 
-ok 755 - Then the output must match "npm_variance:"
+# Scenario number of attributes in the "Animals" project
+ok 753 - Given I am in t/samples/polygons/java
 # 
-ok 756 - Then the output must match "npm_quantile_min:"
+ok 754 - When I run "analizo metrics ."
 # 
-ok 757 - Then the output must match "npm_quantile_lower:"
+ok 755 - Then analizo must report that module Polygon has npm = 3
 # 
-ok 758 - Then the output must match "npm_quantile_median:"
+# Scenario number of attributes in the "Animals" project
+ok 756 - Given I am in t/samples/polygons/csharp
 # 
-ok 759 - Then the output must match "npm_quantile_upper:"
+ok 757 - When I run "analizo metrics ."
 # 
-ok 760 - Then the output must match "npm_quantile_max:"
+ok 758 - Then analizo must report that module Polygon has npm = 2
 # 
-ok 761 - Then the output must match "npm_kurtosis:"
+# Scenario number of attributes in the "Animals" project
+ok 759 - Given I am in t/samples/animals/cpp
 # 
-ok 762 - Then the output must match "npm_skewness:"
+ok 760 - When I run "analizo metrics ."
 # 
-# Scenario "Hello, world" project
-ok 763 - Given I am in t/samples/hello_world/
+ok 761 - Then analizo must report that module Animal has npm = 1
 # 
-ok 764 - When I run "analizo metrics ."
+# Scenario number of attributes in the "Animals" project
+ok 762 - Given I am in t/samples/animals/cpp
 # 
-ok 765 - Then the output must match "npa_mean:"
+ok 763 - When I run "analizo metrics ."
 # 
-ok 766 - Then the output must match "npa_mode:"
+ok 764 - Then analizo must report that module Cat has npm = 2
 # 
-ok 767 - Then the output must match "npa_standard_deviation:"
+# Scenario number of attributes in the "Animals" project
+ok 765 - Given I am in t/samples/animals/cpp
 # 
-ok 768 - Then the output must match "npa_sum:"
+ok 766 - When I run "analizo metrics ."
 # 
-ok 769 - Then the output must match "npa_variance:"
+ok 767 - Then analizo must report that module Dog has npm = 2
 # 
-ok 770 - Then the output must match "npa_quantile_min:"
+# Scenario number of attributes in the "Animals" project
+ok 768 - Given I am in t/samples/animals/java
 # 
-ok 771 - Then the output must match "npa_quantile_lower:"
+ok 769 - When I run "analizo metrics ."
 # 
-ok 772 - Then the output must match "npa_quantile_median:"
+ok 770 - Then analizo must report that module Animal has npm = 1
 # 
-ok 773 - Then the output must match "npa_quantile_upper:"
+# Scenario number of attributes in the "Animals" project
+ok 771 - Given I am in t/samples/animals/java
 # 
-ok 774 - Then the output must match "npa_quantile_max:"
+ok 772 - When I run "analizo metrics ."
 # 
-ok 775 - Then the output must match "npa_kurtosis:"
+ok 773 - Then analizo must report that module Cat has npm = 2
 # 
-ok 776 - Then the output must match "npa_skewness:"
+# Scenario number of attributes in the "Animals" project
+ok 774 - Given I am in t/samples/animals/java
 # 
-# Scenario "Hello, world" project
-ok 777 - Given I am in t/samples/hello_world/
+ok 775 - When I run "analizo metrics ."
 # 
-ok 778 - When I run "analizo metrics ."
+ok 776 - Then analizo must report that module Dog has npm = 2
 # 
-ok 779 - Then the output must match "rfc_mean:"
+# Scenario number of attributes in the "Animals" project
+ok 777 - Given I am in t/samples/animals/csharp
 # 
-ok 780 - Then the output must match "rfc_mode:"
+ok 778 - When I run "analizo metrics ."
 # 
-ok 781 - Then the output must match "rfc_standard_deviation:"
+ok 779 - Then analizo must report that module Animal has npm = 1
 # 
-ok 782 - Then the output must match "rfc_sum:"
+# Scenario number of attributes in the "Animals" project
+ok 780 - Given I am in t/samples/animals/csharp
 # 
-ok 783 - Then the output must match "rfc_variance:"
+ok 781 - When I run "analizo metrics ."
 # 
-ok 784 - Then the output must match "rfc_quantile_min:"
+ok 782 - Then analizo must report that module Cat has npm = 2
 # 
-ok 785 - Then the output must match "rfc_quantile_lower:"
+# Scenario number of attributes in the "Animals" project
+ok 783 - Given I am in t/samples/animals/csharp
 # 
-ok 786 - Then the output must match "rfc_quantile_median:"
+ok 784 - When I run "analizo metrics ."
 # 
-ok 787 - Then the output must match "rfc_quantile_upper:"
+ok 785 - Then analizo must report that module Dog has npm = 2
 # 
-ok 788 - Then the output must match "rfc_quantile_max:"
+# Feature change cost degree
+#  As a software developer I want analizo to report the degree of change cost in my code So that I can evaluate it
+# Scenario "Hello, world" project
+ok 786 - Given I am in t/samples/hello_world/cpp
 # 
-ok 789 - Then the output must match "rfc_kurtosis:"
+ok 787 - When I run "analizo metrics ."
 # 
-ok 790 - Then the output must match "rfc_skewness:"
+ok 788 - Then analizo must report that the project has change_cost = 0.75
 # 
 # Scenario "Hello, world" project
-ok 791 - Given I am in t/samples/hello_world/
+ok 789 - Given I am in t/samples/hello_world/java
 # 
-ok 792 - When I run "analizo metrics ."
+ok 790 - When I run "analizo metrics ."
 # 
-ok 793 - Then the output must match "sc_mean:"
+ok 791 - Then analizo must report that the project has change_cost = 0.75
 # 
-ok 794 - Then the output must match "sc_mode:"
+# Scenario "Hello, world" project
+ok 792 - Given I am in t/samples/hello_world/csharp
 # 
-ok 795 - Then the output must match "sc_standard_deviation:"
+ok 793 - When I run "analizo metrics ."
 # 
-ok 796 - Then the output must match "sc_sum:"
+ok 794 - Then analizo must report that the project has change_cost = 0.75
 # 
-ok 797 - Then the output must match "sc_variance:"
+# Scenario "Animals" project
+ok 795 - Given I am in t/samples/animals/cpp
 # 
-ok 798 - Then the output must match "sc_quantile_min:"
+ok 796 - When I run "analizo metrics ."
 # 
-ok 799 - Then the output must match "sc_quantile_lower:"
+ok 797 - Then analizo must report that the project has change_cost = 0.44
 # 
-ok 800 - Then the output must match "sc_quantile_median:"
+# Scenario "Animals" project
+ok 798 - Given I am in t/samples/animals/java
 # 
-ok 801 - Then the output must match "sc_quantile_upper:"
+ok 799 - When I run "analizo metrics ."
 # 
-ok 802 - Then the output must match "sc_quantile_max:"
+ok 800 - Then analizo must report that the project has change_cost = 0.44
 # 
-ok 803 - Then the output must match "sc_kurtosis:"
+# Scenario "Animals" project
+ok 801 - Given I am in t/samples/animals/csharp
 # 
-ok 804 - Then the output must match "sc_skewness:"
+ok 802 - When I run "analizo metrics ."
 # 
-# Feature average cyclomatic complexity per method
-#  As a software developer I want to calculate the average cyclomatic complexity per method of my code So that I can spot the more complex modules and refactor them
-# Scenario my "conditionals" C project
-ok 805 - Given I am in t/samples/conditionals/c
+ok 803 - Then analizo must report that the project has change_cost = 0.44
 # 
-ok 806 - When I run "analizo metrics ."
+# Scenario "Hieracchical Graph" project
+ok 804 - Given I am in t/samples/hierarchical_graph/c
 # 
-ok 807 - Then analizo must report that module cc1 has accm = 1
+ok 805 - When I run "analizo metrics ."
 # 
-ok 808 - Then analizo must report that module cc2 has accm = 2
+ok 806 - Then analizo must report that the project has change_cost = 0.42
 # 
-ok 809 - Then analizo must report that module cc3 has accm = 3
+# Scenario "Hieracchical Graph" project
+ok 807 - Given I am in t/samples/hierarchical_graph/csharp
 # 
-ok 810 - Then analizo must report that module cc4 has accm = 4
+ok 808 - When I run "analizo metrics ."
 # 
-# Scenario my "conditionals" C project
-ok 811 - Given I am in t/samples/conditionals/csharp
+ok 809 - Then analizo must report that the project has change_cost = 0.28
 # 
-ok 812 - When I run "analizo metrics ."
+# Scenario "Cyclical Graph" project
+ok 810 - Given I am in t/samples/cyclical_graph/c
 # 
-ok 813 - Then analizo must report that module cc1 has accm = 1
+ok 811 - When I run "analizo metrics ."
 # 
-ok 814 - Then analizo must report that module cc2 has accm = 2
+ok 812 - Then analizo must report that the project has change_cost = 0.5
 # 
-ok 815 - Then analizo must report that module cc3 has accm = 3
+# Scenario "Cyclical Graph" project
+ok 813 - Given I am in t/samples/cyclical_graph/csharp
 # 
-ok 816 - Then analizo must report that module cc4 has accm = 4
+ok 814 - When I run "analizo metrics ."
 # 
-# Feature coupling between objects
-#  As a software developer I want analizo to report the value of CBO metric in my code So that I can evaluate it
-# Scenario "Hello, world" project
-ok 817 - Given I am in t/samples/hello_world/c
+ok 815 - Then analizo must report that the project has change_cost = 0.36
 # 
-ok 818 - When I run "analizo metrics ."
+# Feature output only global metrics
+#  As a researcher I want to ouput only the global metrics So that I can evaluate several projects at once
+# Scenario simple case
+ok 816 - Given I am in t/samples/sample_basic/c/
 # 
-ok 819 - Then analizo must report that module main has cbo = 1
+ok 817 - When I run "analizo metrics --global-only ."
 # 
-# Scenario "Hello, world" project
-ok 820 - Given I am in t/samples/hello_world/cpp
+ok 818 - Then the output must match "cbo_mean:"
 # 
-ok 821 - When I run "analizo metrics ."
+ok 819 - And the output must not match "_module:"
 # 
-ok 822 - Then analizo must report that module main has cbo = 1
+# Scenario short version
+ok 820 - Given I am in t/samples/sample_basic/c/
 # 
-# Scenario "Hello, world" project
-ok 823 - Given I am in t/samples/hello_world/java
+ok 821 - When I run "analizo metrics -g ."
 # 
-ok 824 - When I run "analizo metrics ."
+ok 822 - Then the output must match "cbo_mean:"
 # 
-ok 825 - Then analizo must report that module Main has cbo = 1
+ok 823 - And the output must not match "_module:"
 # 
+# Feature number of abstract classes
+#  As a software developer I want analizo to report the number of modules with at least a defined method in my code So that I can evaluate it
 # Scenario "Hello, world" project
-ok 826 - Given I am in t/samples/hello_world/csharp
+ok 824 - Given I am in t/samples/hello_world/cpp
 # 
-ok 827 - When I run "analizo metrics ."
+ok 825 - When I run "analizo metrics ."
 # 
-ok 828 - Then analizo must report that module main has cbo = 1
+ok 826 - Then analizo must report that the project has total_modules_with_defined_methods = 2
 # 
-# Scenario "Animals" project
-ok 829 - Given I am in t/samples/animals/cpp
+# Scenario "Hello, world" project
+ok 827 - Given I am in t/samples/hello_world/java
 # 
-ok 830 - When I run "analizo metrics ."
+ok 828 - When I run "analizo metrics ."
 # 
-ok 831 - Then analizo must report that module main has cbo = 1
+ok 829 - Then analizo must report that the project has total_modules_with_defined_methods = 2
 # 
-# Scenario "Animals" project
-ok 832 - Given I am in t/samples/animals/cpp
+# Scenario "Hello, world" project
+ok 830 - Given I am in t/samples/hello_world/csharp
 # 
-ok 833 - When I run "analizo metrics ."
+ok 831 - When I run "analizo metrics ."
 # 
-ok 834 - Then analizo must report that module mammal has cbo = 0
+ok 832 - Then analizo must report that the project has total_modules_with_defined_methods = 2
 # 
 # Scenario "Animals" project
-ok 835 - Given I am in t/samples/animals/java
+ok 833 - Given I am in t/samples/animals/cpp
 # 
-ok 836 - When I run "analizo metrics ."
+ok 834 - When I run "analizo metrics ."
 # 
-ok 837 - Then analizo must report that module Main has cbo = 1
+ok 835 - Then analizo must report that the project has total_modules_with_defined_methods = 5
 # 
 # Scenario "Animals" project
-ok 838 - Given I am in t/samples/animals/java
+ok 836 - Given I am in t/samples/animals/java
 # 
-ok 839 - When I run "analizo metrics ."
+ok 837 - When I run "analizo metrics ."
 # 
-ok 840 - Then analizo must report that module Mammal has cbo = 0
+ok 838 - Then analizo must report that the project has total_modules_with_defined_methods = 5
 # 
 # Scenario "Animals" project
-ok 841 - Given I am in t/samples/animals/csharp
+ok 839 - Given I am in t/samples/animals/csharp
 # 
-ok 842 - When I run "analizo metrics ."
+ok 840 - When I run "analizo metrics ."
 # 
-ok 843 - Then analizo must report that module main has cbo = 1
+ok 841 - Then analizo must report that the project has total_modules_with_defined_methods = 5
 # 
-# Scenario "Animals" project
-ok 844 - Given I am in t/samples/animals/csharp
+# Feature coupling between objects
+#  As a software developer I want analizo to report the value of CBO metric in my code So that I can evaluate it
+# Scenario "Hello, world" project
+ok 842 - Given I am in t/samples/hello_world/c
 # 
-ok 845 - When I run "analizo metrics ."
+ok 843 - When I run "analizo metrics ."
 # 
-ok 846 - Then analizo must report that module Mammal has cbo = 0
+ok 844 - Then analizo must report that module main has cbo = 1
 # 
-# Feature total modules
-#  As a software developer I want analizo to report the total number of modules in my code So that I can evaluate it
-# Scenario Java Enumeration sample
-ok 847 - Given I am in t/samples/enumeration
+# Scenario "Hello, world" project
+ok 845 - Given I am in t/samples/hello_world/cpp
 # 
-ok 848 - When I run "analizo metrics ."
+ok 846 - When I run "analizo metrics ."
 # 
-ok 849 - Then analizo must report that the project has total_modules = 3
+ok 847 - Then analizo must report that module main has cbo = 1
 # 
-# Feature change cost degree
-#  As a software developer I want analizo to report the degree of change cost in my code So that I can evaluate it
 # Scenario "Hello, world" project
-ok 850 - Given I am in t/samples/hello_world/cpp
+ok 848 - Given I am in t/samples/hello_world/java
 # 
-ok 851 - When I run "analizo metrics ."
+ok 849 - When I run "analizo metrics ."
 # 
-ok 852 - Then analizo must report that the project has change_cost = 0.75
+ok 850 - Then analizo must report that module Main has cbo = 1
 # 
 # Scenario "Hello, world" project
-ok 853 - Given I am in t/samples/hello_world/java
+ok 851 - Given I am in t/samples/hello_world/csharp
 # 
-ok 854 - When I run "analizo metrics ."
+ok 852 - When I run "analizo metrics ."
 # 
-ok 855 - Then analizo must report that the project has change_cost = 0.75
+ok 853 - Then analizo must report that module main has cbo = 1
 # 
-# Scenario "Hello, world" project
-ok 856 - Given I am in t/samples/hello_world/csharp
+# Scenario "Animals" project
+ok 854 - Given I am in t/samples/animals/cpp
 # 
-ok 857 - When I run "analizo metrics ."
+ok 855 - When I run "analizo metrics ."
 # 
-ok 858 - Then analizo must report that the project has change_cost = 0.75
+ok 856 - Then analizo must report that module main has cbo = 1
 # 
 # Scenario "Animals" project
-ok 859 - Given I am in t/samples/animals/cpp
+ok 857 - Given I am in t/samples/animals/cpp
 # 
-ok 860 - When I run "analizo metrics ."
+ok 858 - When I run "analizo metrics ."
 # 
-ok 861 - Then analizo must report that the project has change_cost = 0.44
+ok 859 - Then analizo must report that module mammal has cbo = 0
 # 
 # Scenario "Animals" project
-ok 862 - Given I am in t/samples/animals/java
+ok 860 - Given I am in t/samples/animals/java
 # 
-ok 863 - When I run "analizo metrics ."
+ok 861 - When I run "analizo metrics ."
 # 
-ok 864 - Then analizo must report that the project has change_cost = 0.44
+ok 862 - Then analizo must report that module Main has cbo = 1
 # 
 # Scenario "Animals" project
-ok 865 - Given I am in t/samples/animals/csharp
+ok 863 - Given I am in t/samples/animals/java
 # 
-ok 866 - When I run "analizo metrics ."
+ok 864 - When I run "analizo metrics ."
 # 
-ok 867 - Then analizo must report that the project has change_cost = 0.44
+ok 865 - Then analizo must report that module Mammal has cbo = 0
 # 
-# Scenario "Hieracchical Graph" project
-ok 868 - Given I am in t/samples/hierarchical_graph/c
+# Scenario "Animals" project
+ok 866 - Given I am in t/samples/animals/csharp
 # 
-ok 869 - When I run "analizo metrics ."
+ok 867 - When I run "analizo metrics ."
 # 
-ok 870 - Then analizo must report that the project has change_cost = 0.42
+ok 868 - Then analizo must report that module main has cbo = 1
 # 
-# Scenario "Hieracchical Graph" project
-ok 871 - Given I am in t/samples/hierarchical_graph/csharp
+# Scenario "Animals" project
+ok 869 - Given I am in t/samples/animals/csharp
 # 
-ok 872 - When I run "analizo metrics ."
+ok 870 - When I run "analizo metrics ."
 # 
-ok 873 - Then analizo must report that the project has change_cost = 0.28
+ok 871 - Then analizo must report that module Mammal has cbo = 0
 # 
-# Scenario "Cyclical Graph" project
-ok 874 - Given I am in t/samples/cyclical_graph/c
+# Feature afferent connections with deep inheritance
+#  As a software developer I want analizo to report the afferent connections of each module So that I can evaluate it
+# Scenario afferent connections of the dog family java sample
+ok 872 - Given I am in t/samples/deep_inheritance/java
 # 
-ok 875 - When I run "analizo metrics ."
+ok 873 - When I run "analizo metrics ."
 # 
-ok 876 - Then analizo must report that the project has change_cost = 0.5
+ok 874 - Then analizo must report that module Dog has acc = 7
 # 
-# Scenario "Cyclical Graph" project
-ok 877 - Given I am in t/samples/cyclical_graph/csharp
+# Scenario afferent connections of the dog family java sample
+ok 875 - Given I am in t/samples/deep_inheritance/java
 # 
-ok 878 - When I run "analizo metrics ."
+ok 876 - When I run "analizo metrics ."
 # 
-ok 879 - Then analizo must report that the project has change_cost = 0.36
+ok 877 - Then analizo must report that module DogFirstGreatGrandson has acc = 1
 # 
-# Feature list metrics
-#  As a Research or Practioner I want to extract metrics from source code So that I can learn, understand and evaluate it
-# Scenario listing metrics
-ok 880 - When I run "analizo metrics --list"
+# Scenario afferent connections of the dog family java sample
+ok 878 - Given I am in t/samples/deep_inheritance/java
 # 
-ok 881 - Then analizo must present a list of metrics
+ok 879 - When I run "analizo metrics ."
 # 
-# Scenario listing metrics
-ok 882 - When I run "analizo metrics -l"
+ok 880 - Then analizo must report that module DogFirstPuppy has acc = 4
 # 
-ok 883 - Then analizo must present a list of metrics
+# Scenario afferent connections of the dog family java sample
+ok 881 - Given I am in t/samples/deep_inheritance/java
 # 
-# Feature number of abstract classes
-#  As a software developer I want analizo to report the number of abstract classes in my code So that I can evaluate it
-# Scenario "Hello, world" project
-ok 884 - Given I am in t/samples/hello_world/cpp
+ok 882 - When I run "analizo metrics ."
+# 
+ok 883 - Then analizo must report that module DogGrandson has acc = 3
+# 
+# Scenario afferent connections of the dog family java sample
+ok 884 - Given I am in t/samples/deep_inheritance/java
 # 
 ok 885 - When I run "analizo metrics ."
 # 
-ok 886 - Then analizo must report that the project has total_abstract_classes = 0
+ok 886 - Then analizo must report that module DogSecondGreatGrandson has acc = 0
 # 
-# Scenario "Hello, world" project
-ok 887 - Given I am in t/samples/hello_world/java
+# Scenario afferent connections of the dog family java sample
+ok 887 - Given I am in t/samples/deep_inheritance/java
 # 
 ok 888 - When I run "analizo metrics ."
 # 
-ok 889 - Then analizo must report that the project has total_abstract_classes = 0
+ok 889 - Then analizo must report that module DogSecondPuppy has acc = 0
 # 
-# Scenario "Hello, world" project
-ok 890 - Given I am in t/samples/hello_world/csharp
+# Scenario afferent connections of the dog family java sample
+ok 890 - Given I am in t/samples/deep_inheritance/java
 # 
 ok 891 - When I run "analizo metrics ."
 # 
-ok 892 - Then analizo must report that the project has total_abstract_classes = 0
+ok 892 - Then analizo must report that module DogSuperYoung has acc = 0
 # 
-# Scenario "Animals" project
-ok 893 - Given I am in t/samples/animals/cpp
+# Scenario afferent connections of the dog family java sample
+ok 893 - Given I am in t/samples/deep_inheritance/java
 # 
 ok 894 - When I run "analizo metrics ."
 # 
-ok 895 - Then analizo must report that the project has total_abstract_classes = 2
+ok 895 - Then analizo must report that module Human has acc = 2
 # 
-# Scenario "Animals" project
-ok 896 - Given I am in t/samples/animals/java
+# Scenario afferent connections of the dog family java sample
+ok 896 - Given I am in t/samples/deep_inheritance/java
 # 
 ok 897 - When I run "analizo metrics ."
 # 
-ok 898 - Then analizo must report that the project has total_abstract_classes = 2
+ok 898 - Then analizo must report that module ShopController has acc = 0
 # 
-# Scenario "Animals" project
-ok 899 - Given I am in t/samples/animals/csharp
+# Scenario afferent connections of the dog family java sample
+ok 899 - Given I am in t/samples/deep_inheritance/java
 # 
 ok 900 - When I run "analizo metrics ."
 # 
-ok 901 - Then analizo must report that the project has total_abstract_classes = 2
+ok 901 - Then analizo must report that module VenderShop has acc = 1
 # 
-# Scenario "Polygons" project
-ok 902 - Given I am in t/samples/polygons/cpp
+# Feature average cyclomatic complexity per method
+#  As a software developer I want to calculate the average cyclomatic complexity per method of my code So that I can spot the more complex modules and refactor them
+# Scenario my "conditionals" C project
+ok 902 - Given I am in t/samples/conditionals/c
 # 
 ok 903 - When I run "analizo metrics ."
 # 
-ok 904 - Then analizo must report that the project has total_abstract_classes = 2
+ok 904 - Then analizo must report that module cc1 has accm = 1
 # 
-# Scenario "Polygons" project
-ok 905 - Given I am in t/samples/polygons/java
+ok 905 - Then analizo must report that module cc2 has accm = 2
 # 
-ok 906 - When I run "analizo metrics ."
+ok 906 - Then analizo must report that module cc3 has accm = 3
 # 
-ok 907 - Then analizo must report that the project has total_abstract_classes = 2
+ok 907 - Then analizo must report that module cc4 has accm = 4
 # 
-# Scenario "Polygons" project
-ok 908 - Given I am in t/samples/polygons/csharp
+# Scenario my "conditionals" C project
+ok 908 - Given I am in t/samples/conditionals/csharp
 # 
 ok 909 - When I run "analizo metrics ."
 # 
-ok 910 - Then analizo must report that the project has total_abstract_classes = 2
+ok 910 - Then analizo must report that module cc1 has accm = 1
 # 
-# Scenario "AbstractClass" project
-ok 911 - Given I am in t/samples/abstract_class/java
+ok 911 - Then analizo must report that module cc2 has accm = 2
 # 
-ok 912 - When I run "analizo metrics ."
+ok 912 - Then analizo must report that module cc3 has accm = 3
 # 
-ok 913 - Then analizo must report that the project has total_abstract_classes = 1
+ok 913 - Then analizo must report that module cc4 has accm = 4
 # 
-ok 914 - And analizo must report that the project has total_methods_per_abstract_class = 6
+# Feature list metrics
+#  As a Research or Practioner I want to extract metrics from source code So that I can learn, understand and evaluate it
+# Scenario listing metrics
+ok 914 - When I run "analizo metrics --list"
 # 
-# Scenario "AbstractClass" project
-ok 915 - Given I am in t/samples/abstract_class/csharp
+ok 915 - Then analizo must present a list of metrics
 # 
-ok 916 - When I run "analizo metrics ."
+# Scenario listing metrics
+ok 916 - When I run "analizo metrics -l"
 # 
-ok 917 - Then analizo must report that the project has total_abstract_classes = 1
+ok 917 - Then analizo must present a list of metrics
 # 
-ok 918 - And analizo must report that the project has total_methods_per_abstract_class = 1
+# Feature average number of parameters metric
+#  As a software developer I want to calculate the average number of arguments per method metric So that I can evaluate my code
+# Scenario number of parameters in the "Animals" project
+ok 918 - Given I am in t/samples/animals/cpp
 # 
-# Feature number of methods
-#  As a software developer I want analizo to report the number of methods of each module So that I can evaluate it
-# Scenario number of methods of the polygon java sample
-ok 919 - Given I am in t/samples/polygons/cpp
+ok 919 - When I run "analizo metrics ."
 # 
-ok 920 - When I run "analizo metrics ."
+ok 920 - Then analizo must report that module Dog has anpm = 0.5
 # 
-ok 921 - Then analizo must report that module CPolygon has nom = 3
+ok 921 - And analizo must report that module Cat has anpm = 0.5
 # 
-# Scenario number of methods of the polygon java sample
-ok 922 - Given I am in t/samples/polygons/cpp
+ok 922 - And analizo must report that module main has anpm = 0
 # 
-ok 923 - When I run "analizo metrics ."
+# Scenario number of parameters in the "Animals" project
+ok 923 - Given I am in t/samples/animals/java
 # 
-ok 924 - Then analizo must report that module CTetragon has nom = 2
+ok 924 - When I run "analizo metrics ."
 # 
-# Scenario number of methods of the polygon java sample
-ok 925 - Given I am in t/samples/polygons/java
+ok 925 - Then analizo must report that module Dog has anpm = 0.5
 # 
-ok 926 - When I run "analizo metrics ."
+ok 926 - And analizo must report that module Cat has anpm = 0.5
 # 
-ok 927 - Then analizo must report that module Polygon has nom = 3
+ok 927 - And analizo must report that module Main has anpm = 1
 # 
-# Scenario number of methods of the polygon java sample
-ok 928 - Given I am in t/samples/polygons/csharp
+# Scenario number of parameters in the "Animals" project
+ok 928 - Given I am in t/samples/animals/csharp
 # 
 ok 929 - When I run "analizo metrics ."
 # 
-ok 930 - Then analizo must report that module Polygon has nom = 2
+ok 930 - Then analizo must report that module Dog has anpm = 0.5
 # 
-# Scenario number of methods of the polygon java sample
-ok 931 - Given I am in t/samples/polygons/csharp
+ok 931 - And analizo must report that module Cat has anpm = 0.5
 # 
-ok 932 - When I run "analizo metrics ."
+ok 932 - And analizo must report that module main has anpm = 1
 # 
-ok 933 - Then analizo must report that module Tetragon has nom = 2
+# Feature total modules
+#  As a software developer I want analizo to report the total number of modules in my code So that I can evaluate it
+# Scenario Java Enumeration sample
+ok 933 - Given I am in t/samples/enumeration
 # 
-# Scenario number of methods of the polygon java sample
-ok 934 - Given I am in t/samples/animals/cpp
+ok 934 - When I run "analizo metrics ."
 # 
-ok 935 - When I run "analizo metrics ."
+ok 935 - Then analizo must report that the project has total_modules = 3
 # 
-ok 936 - Then analizo must report that module Animal has nom = 1
+# Feature number of attributes metric
+#  As a software developer I want to calculate the number of attributes per module metric So that I can evaluate my code
+# Scenario number of attributes in the "Animals" project
+ok 936 - Given I am in t/samples/animals/cpp
 # 
-# Scenario number of methods of the polygon java sample
-ok 937 - Given I am in t/samples/animals/cpp
+ok 937 - When I run "analizo metrics ."
 # 
-ok 938 - When I run "analizo metrics ."
+ok 938 - Then analizo must report that module Dog has noa = 1
 # 
-ok 939 - Then analizo must report that module Cat has nom = 2
+ok 939 - And analizo must report that module Cat has noa = 1
 # 
-# Scenario number of methods of the polygon java sample
-ok 940 - Given I am in t/samples/animals/cpp
+ok 940 - And analizo must report that module main has noa = 0
 # 
-ok 941 - When I run "analizo metrics ."
+# Scenario number of attributes in the "Animals" project
+ok 941 - Given I am in t/samples/animals/java
 # 
-ok 942 - Then analizo must report that module Dog has nom = 2
+ok 942 - When I run "analizo metrics ."
 # 
-# Scenario number of methods of the polygon java sample
-ok 943 - Given I am in t/samples/animals/java
+ok 943 - Then analizo must report that module Dog has noa = 1
 # 
-ok 944 - When I run "analizo metrics ."
+ok 944 - And analizo must report that module Cat has noa = 1
 # 
-ok 945 - Then analizo must report that module Animal has nom = 1
+ok 945 - And analizo must report that module Main has noa = 0
 # 
-# Scenario number of methods of the polygon java sample
-ok 946 - Given I am in t/samples/animals/java
+# Scenario number of attributes in the "Animals" project
+ok 946 - Given I am in t/samples/animals/csharp
 # 
 ok 947 - When I run "analizo metrics ."
 # 
-ok 948 - Then analizo must report that module Cat has nom = 2
+ok 948 - Then analizo must report that module Dog has noa = 1
 # 
-# Scenario number of methods of the polygon java sample
-ok 949 - Given I am in t/samples/animals/java
+ok 949 - And analizo must report that module Cat has noa = 1
 # 
-ok 950 - When I run "analizo metrics ."
+ok 950 - And analizo must report that module main has noa = 0
 # 
-ok 951 - Then analizo must report that module Dog has nom = 2
+# Feature functions calls
+# Scenario detect function calls among classes
+ok 951 - Given I am in t/samples/animals/cpp
 # 
-# Scenario number of methods of the polygon java sample
-ok 952 - Given I am in t/samples/animals/csharp
+ok 952 - When I run "analizo graph ."
 # 
-ok 953 - When I run "analizo metrics ."
+ok 953 - Then analizo must report that "Cat::Cat(char *)" depends on "Cat::_name"
 # 
-ok 954 - Then analizo must report that module Animal has nom = 1
+ok 954 - And analizo must not report that "Cat::Cat(char *)" depends on "Cat::name()"
 # 
-# Scenario number of methods of the polygon java sample
-ok 955 - Given I am in t/samples/animals/csharp
+ok 955 - And the exit status must be 0
 # 
-ok 956 - When I run "analizo metrics ."
+# Feature group by modules
+# Scenario sample project
+ok 956 - Given I am in t/samples/sample_basic/c/
 # 
-ok 957 - Then analizo must report that module Cat has nom = 2
+ok 957 - When I run "analizo graph --modules ."
 # 
-# Scenario number of methods of the polygon java sample
-ok 958 - Given I am in t/samples/animals/csharp
+ok 958 - Then analizo must report that "module1" depends on "module2"
 # 
-ok 959 - When I run "analizo metrics ."
+ok 959 - Then analizo must report that "module1" depends on "module3"
 # 
-ok 960 - Then analizo must report that module Dog has nom = 2
+# Feature input files for graph tool
+# Scenario passing specific files in the command line
+ok 960 - Given I am in t/samples/sample_basic/c
 # 
-# Scenario not computes macro on C code as method definition
-ok 961 - Given I am in t/samples/macro
+ok 961 - When I run "analizo graph module1.c module2.c"
 # 
-ok 962 - When I run "analizo metrics ."
+ok 962 - Then the output must match "module1"
 # 
-ok 963 - Then analizo must report that module using_macro has nom = 1
+ok 963 - And the output must match "module2"
 # 
-# Feature language filters
-#  As a software developer in a multi-language project I want to analyze only one programming language So that the results are as correct as possible
-# Scenario filtering for C code
-ok 964 - Given I am in t/samples/mixed
+ok 964 - And the output must not match "module3"
 # 
-ok 965 - When I run "analizo metrics --language c ."
+# Scenario passing unexisting file
+ok 965 - Given I am in t/samples/sample_basic/c
 # 
-ok 966 - Then the output must match "native_backend"
+ok 966 - When I run "analizo graph unexisting-file.c"
 # 
-ok 967 - And the output must not match "UI"
+ok 967 - Then analizo must emit a warning matching "is not readable"
 # 
-ok 968 - And the output must not match "Backend"
+# Feature clustering subroutines in the same module together
+# Scenario clustering dependencies
+ok 968 - Given I am in t/samples/sample_basic/c/
 # 
-ok 969 - And the output must not match "CSharp_Backend"
+ok 969 - When I run "analizo graph --cluster ."
 # 
-# Scenario filtering for Java code
-ok 970 - Given I am in t/samples/mixed
+ok 970 - Then analizo must report that "module1::main()" is part of "module1"
 # 
-ok 971 - When I run "analizo metrics --language java ."
+ok 971 - Then analizo must report that "module2::say_hello()" is part of "module2"
 # 
-ok 972 - Then the output must match "UI"
+ok 972 - Then analizo must report that "module2::say_bye()" is part of "module2"
 # 
-ok 973 - And the output must match "Backend"
+ok 973 - Then analizo must report that "module3::variable" is part of "module3"
 # 
-ok 974 - And the output must not match "native_backend"
+ok 974 - Then analizo must report that "module3::callback()" is part of "module3"
 # 
-ok 975 - And the output must not match "CSharp_Backend"
+# Feature displaying version
+# Scenario running without any arguments
+ok 975 - When I run "analizo graph"
 # 
-# Scenario filtering for CSharp code
-ok 976 - Given I am in t/samples/mixed
+ok 976 - Then analizo must emit a warning matching "Usage:"
 # 
-ok 977 - When I run "analizo metrics --language csharp ."
+ok 977 - And the exit status must not be 0
 # 
-ok 978 - Then the output must match "CSharp_Backend"
+# Feature plain analizo graph run
+# Scenario simply running analizo
+ok 978 - Given I am in t/samples/sample_basic/c/
 # 
-ok 979 - And the output must not match "UI"
+ok 979 - When I run "analizo graph ."
 # 
-ok 980 - And the output must not match "native_backend"
+ok 980 - Then analizo must report that "module1::main()" depends on "module3::variable"
 # 
-# Scenario listing languages
-ok 981 - When I run "analizo metrics --language list"
+ok 981 - Then analizo must report that "module1::main()" depends on "module3::callback()"
 # 
-ok 982 - Then analizo must present a list of languages
+ok 982 - Then analizo must report that "module1::main()" depends on "module2::say_bye()"
 # 
-# Feature output only global metrics
-#  As a researcher I want to ouput only the global metrics So that I can evaluate several projects at once
-# Scenario simple case
-ok 983 - Given I am in t/samples/sample_basic/c/
+ok 983 - Then analizo must report that "module1::main()" depends on "module2::say_hello()"
 # 
-ok 984 - When I run "analizo metrics --global-only ."
+ok 984 - And the exit status must be 0
 # 
-ok 985 - Then the output must match "cbo_mean:"
+# Feature omitting certain modules
+# Scenario omitting say_bye
+ok 985 - Given I am in t/samples/sample_basic/
 # 
-ok 986 - And the output must not match "_module:"
+ok 986 - When I run "analizo graph --omit 'module2::say_bye()' ."
 # 
-# Scenario short version
-ok 987 - Given I am in t/samples/sample_basic/c/
+ok 987 - Then the output must not match "module2::say_bye()"
 # 
-ok 988 - When I run "analizo metrics -g ."
+# Scenario omitting two functions
+ok 988 - Given I am in t/samples/sample_basic/
 # 
-ok 989 - Then the output must match "cbo_mean:"
+ok 989 - When I run "analizo graph --omit 'module2::say_bye()','module2::say_hello()' ."
 # 
-ok 990 - And the output must not match "_module:"
+ok 990 - Then the output must not match "module2::say_bye()"
 # 
-# Feature number of abstract classes
-#  As a software developer I want analizo to report the number of modules with at least a defined method in my code So that I can evaluate it
-# Scenario "Hello, world" project
-ok 991 - Given I am in t/samples/hello_world/cpp
+ok 991 - Then the output must not match "module2::say_hello()"
 # 
-ok 992 - When I run "analizo metrics ."
+# Scenario omitting depending functions
+ok 992 - Given I am in t/samples/sample_basic/
 # 
-ok 993 - Then analizo must report that the project has total_modules_with_defined_attributes = 1
+ok 993 - When I run "analizo graph --omit 'module1::main()' ."
 # 
-# Scenario "Hello, world" project
-ok 994 - Given I am in t/samples/hello_world/java
+ok 994 - Then the output must not match "module1::main()"
 # 
-ok 995 - When I run "analizo metrics ."
+# Feature output file for graph tool
+# Scenario passing output file in the command line
+ok 995 - Given I am in .
 # 
-ok 996 - Then analizo must report that the project has total_modules_with_defined_attributes = 1
+ok 996 - When I run "analizo graph --output output.dot.tmp t/samples/sample_basic/c/"
 # 
-# Scenario "Hello, world" project
-ok 997 - Given I am in t/samples/hello_world/csharp
+ok 997 - Then the contents of "output.dot.tmp" must match "module1"
 # 
-ok 998 - When I run "analizo metrics ."
+ok 998 - And the exit status must be 0
 # 
-ok 999 - Then analizo must report that the project has total_modules_with_defined_attributes = 1
+# Scenario passing output file in an unexisting directory
+ok 999 - Given I am in .
 # 
-# Scenario "Animals" project
-ok 1000 - Given I am in t/samples/animals/cpp
+ok 1000 - When I run "analizo graph --output /this/directory/must/not/exists/output.dot t/samples/sample_basic/c/"
 # 
-ok 1001 - When I run "analizo metrics ."
+ok 1001 - Then analizo must emit a warning matching "No such file or directory"
 # 
-ok 1002 - Then analizo must report that the project has total_modules_with_defined_attributes = 2
+ok 1002 - And the exit status must not be 0
 # 
-# Scenario "Animals" project
-ok 1003 - Given I am in t/samples/animals/java
+# Scenario passing output file without permission to write
+ok 1003 - Given I am in .
 # 
-ok 1004 - When I run "analizo metrics ."
+ok 1004 - When I run "touch output.tmp"
 # 
-ok 1005 - Then analizo must report that the project has total_modules_with_defined_attributes = 2
+ok 1005 - And I run "chmod 000 output.tmp"
 # 
-# Scenario "Animals" project
-ok 1006 - Given I am in t/samples/animals/csharp
+ok 1006 - And I run "analizo graph --output output.tmp t/samples/sample_basic/c/"
 # 
-ok 1007 - When I run "analizo metrics ."
+ok 1007 - Then the exit status must not be 0
 # 
-ok 1008 - Then analizo must report that the project has total_modules_with_defined_attributes = 2
+ok 1008 - And analizo must emit a warning matching "Permission denied"
 # 
 1..1008
 ok
 All tests successful.
-Files=54, Tests=1627, 378 wallclock secs ( 0.94 usr  0.37 sys + 234.94 cusr 49.92 csys = 286.17 CPU)
+Files=54, Tests=1627, 243 wallclock secs ( 0.84 usr  0.18 sys + 209.78 cusr 33.86 csys = 244.66 CPU)
 Result: PASS
 make[1]: Leaving directory '/build/reproducible-path/analizo-1.25.5'
    create-stamp debian/debhelper-build-stamp
@@ -5147,104 +5183,104 @@
    debian/rules override_dh_auto_install
 make[1]: Entering directory '/build/reproducible-path/analizo-1.25.5'
 dh_auto_install
-	make -j3 install DESTDIR=/build/reproducible-path/analizo-1.25.5/debian/analizo AM_UPDATE_INFO_DIR=no PREFIX=/usr
+	make -j4 install DESTDIR=/build/reproducible-path/analizo-1.25.5/debian/analizo AM_UPDATE_INFO_DIR=no PREFIX=/usr
 make[2]: Entering directory '/build/reproducible-path/analizo-1.25.5'
 Skip blib/lib/auto/share/dist/Analizo/README (unchanged)
 Skip blib/lib/auto/share/dist/Analizo/bash-completion/analizo (unchanged)
 Manifying 26 pod documents
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/profile.pl
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/Class.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/Git.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/BDD/Cucumber/Extension.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Extractor.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/ModuleMetric.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/ModuleMetrics.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Model.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metrics.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Extractor.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/LanguageFilter.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/FilenameFilter.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/GlobalMetrics.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/ModuleMetric.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/LanguageFilter.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/help.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/metrics.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/graph.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/tree_evolution.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/files_graph.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/metrics_batch.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/metrics_history.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Extractor/Doxyparse.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/GlobalMetric/TotalAbstractClasses.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Filter/Client.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/GlobalMetric/MethodsPerAbstractClass.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/GlobalMetric/TotalAbstractClasses.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/GlobalMetric/ChangeCost.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Output.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Directories.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Git.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Job.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Directories.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Output.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Runner.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Git.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Job/Directories.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Job/Git.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Runner/Sequential.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Runner/Parallel.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Runner/Sequential.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Output/DB.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Output/CSV.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/LackOfCohesionOfMethods.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/AverageMethodLinesOfCode.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/LinesOfCode.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Job/Git.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Batch/Job/Directories.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfMethods.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfPublicAttributes.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/CouplingBetweenObjects.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfAttributes.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/AverageNumberOfParameters.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/LinesOfCode.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfChildren.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/AfferentConnections.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/StructuralComplexity.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/AverageNumberOfParameters.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/LackOfCohesionOfMethods.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/AverageCycloComplexity.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfPublicAttributes.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfAttributes.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/AverageMethodLinesOfCode.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/AfferentConnections.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/DepthOfInheritanceTree.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfPublicMethods.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/ResponseForClass.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfMethods.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/MaximumMethodLinesOfCode.pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Filter/Client.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/StructuralComplexity.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/ResponseForClass.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfPublicMethods.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Extractor/Doxyparse.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/files_graph.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/help.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/metrics_history.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/graph.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/metrics_batch.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/metrics.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Analizo/Command/tree_evolution.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/Git.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/Class.pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/BDD/Cucumber/Extension.pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/auto/share/dist/Analizo/README
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/auto/share/dist/Analizo/bash-completion/analizo
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::AverageNumberOfParameters.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::files_graph.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfMethods.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::GlobalMetric::ChangeCost.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::CouplingBetweenObjects.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::LackOfCohesionOfMethods.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfPublicMethods.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::metrics_history.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metrics.3pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::graph.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::AverageCycloComplexity.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::metrics_batch.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::ResponseForClass.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::AfferentConnections.3pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::AverageMethodLinesOfCode.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metrics.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::DepthOfInheritanceTree.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::GlobalMetric::ChangeCost.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::AfferentConnections.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfChildren.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::metrics.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::ResponseForClass.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfAttributes.3pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::tree_evolution.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::files_graph.3pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfPublicAttributes.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::help.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::AverageNumberOfParameters.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::AverageCycloComplexity.3pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::LinesOfCode.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfChildren.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::StructuralComplexity.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::DepthOfInheritanceTree.3pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::metrics.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::help.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfPublicMethods.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::metrics_history.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::LackOfCohesionOfMethods.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfAttributes.3pm
-Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::CouplingBetweenObjects.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Command::metrics_batch.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::StructuralComplexity.3pm
+Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfMethods.3pm
 Installing /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/bin/analizo
 make[2]: Leaving directory '/build/reproducible-path/analizo-1.25.5'
 rm -f -rv /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test
-removed '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/Class.pm'
+removed '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo.pm'
 removed '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/Git.pm'
 removed '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/BDD/Cucumber/Extension.pm'
 removed directory '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/BDD/Cucumber'
 removed directory '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/BDD'
+removed '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo/Class.pm'
 removed directory '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo'
-removed '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test/Analizo.pm'
 removed directory '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/Test'
 rm -f -v  /build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/profile.pl
 removed '/build/reproducible-path/analizo-1.25.5/debian/analizo/usr/share/perl5/profile.pl'
@@ -5272,12 +5308,14 @@
 dpkg-buildpackage: info: binary-only upload (no source included)
 dpkg-genchanges: info: including full source code in upload
 I: copying local configuration
+I: user script /srv/workspace/pbuilder/28620/tmp/hooks/B01_cleanup starting
+I: user script /srv/workspace/pbuilder/28620/tmp/hooks/B01_cleanup finished
 I: unmounting dev/ptmx filesystem
 I: unmounting dev/pts filesystem
 I: unmounting dev/shm filesystem
 I: unmounting proc filesystem
 I: unmounting sys filesystem
 I: cleaning the build env 
-I: removing directory /srv/workspace/pbuilder/11323 and its subdirectories
-I: Current time: Mon Nov 25 14:20:43 -12 2024
-I: pbuilder-time-stamp: 1732587643
+I: removing directory /srv/workspace/pbuilder/28620 and its subdirectories
+I: Current time: Tue Nov 26 16:26:47 +14 2024
+I: pbuilder-time-stamp: 1732588007