Diff of the two buildlogs: -- --- b1/build.log 2023-06-05 06:03:15.822897867 +0000 +++ b2/build.log 2023-06-05 06:19:34.783980056 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sun Jun 4 17:53:30 -12 2023 -I: pbuilder-time-stamp: 1685944410 +I: Current time: Mon Jun 5 20:03:25 +14 2023 +I: pbuilder-time-stamp: 1685945005 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz] I: copying local configuration @@ -16,7 +16,7 @@ I: copying [./analizo_1.25.4.orig.tar.gz] I: copying [./analizo_1.25.4-2.debian.tar.xz] I: Extracting source -gpgv: Signature made Sat Oct 15 01:20:27 2022 -12 +gpgv: Signature made Sun Oct 16 03:20:27 2022 +14 gpgv: using RSA key D1E1316E93A760A8104D85FABB3A68018649AA06 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./analizo_1.25.4-2.dsc: no acceptable signature found @@ -30,135 +30,167 @@ dpkg-source: info: applying no-shell-for-system.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/18176/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/18998/tmp/hooks/D01_modify_environment starting +debug: Running on virt32a. +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 Jun 5 20:04 /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/18998/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/18998/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build' - 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='bookworm' - 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]="15" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.2.15(1)-release' + BUILDDIR=/build + 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=bookworm + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='c55d3bec65b04c00a153afdbfed9fbc5' - 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='18176' - PS1='# ' - PS2='> ' + INVOCATION_ID=cb55fda59f04452489b3217ba1be5581 + 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=18998 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.4fIGDiF9/pbuilderrc_t5O9 --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.4fIGDiF9/b1 --logfile b1/build.log analizo_1.25.4-2.dsc' - SUDO_GID='114' - SUDO_UID='110' - 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.4fIGDiF9/pbuilderrc_ZbkR --distribution bookworm --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.4fIGDiF9/b2 --logfile b2/build.log --extrapackages usrmerge analizo_1.25.4-2.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 jtx1b 5.10.0-23-arm64 #1 SMP Debian 5.10.179-1 (2023-05-12) aarch64 GNU/Linux + Linux i-capture-the-hostname 5.10.0-23-armmp-lpae #1 SMP Debian 5.10.179-1 (2023-05-12) armv7l GNU/Linux I: ls -l /bin total 5072 - -rwxr-xr-x 1 root root 838488 Apr 23 09:24 bash - -rwxr-xr-x 3 root root 67144 Sep 18 2022 bunzip2 - -rwxr-xr-x 3 root root 67144 Sep 18 2022 bzcat - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzcmp -> bzdiff - -rwxr-xr-x 1 root root 2225 Sep 18 2022 bzdiff - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzegrep -> bzgrep - -rwxr-xr-x 1 root root 4893 Nov 27 2021 bzexe - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzfgrep -> bzgrep - -rwxr-xr-x 1 root root 3775 Sep 18 2022 bzgrep - -rwxr-xr-x 3 root root 67144 Sep 18 2022 bzip2 - -rwxr-xr-x 1 root root 67112 Sep 18 2022 bzip2recover - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzless -> bzmore - -rwxr-xr-x 1 root root 1297 Sep 18 2022 bzmore - -rwxr-xr-x 1 root root 67632 Sep 20 2022 cat - -rwxr-xr-x 1 root root 67676 Sep 20 2022 chgrp - -rwxr-xr-x 1 root root 67644 Sep 20 2022 chmod - -rwxr-xr-x 1 root root 67684 Sep 20 2022 chown - -rwxr-xr-x 1 root root 133532 Sep 20 2022 cp - -rwxr-xr-x 1 root root 132868 Jan 5 01:20 dash - -rwxr-xr-x 1 root root 133220 Sep 20 2022 date - -rwxr-xr-x 1 root root 67732 Sep 20 2022 dd - -rwxr-xr-x 1 root root 68104 Sep 20 2022 df - -rwxr-xr-x 1 root root 133632 Sep 20 2022 dir - -rwxr-xr-x 1 root root 59128 Mar 22 21:02 dmesg - lrwxrwxrwx 1 root root 8 Dec 19 01:33 dnsdomainname -> hostname - lrwxrwxrwx 1 root root 8 Dec 19 01:33 domainname -> hostname - -rwxr-xr-x 1 root root 67560 Sep 20 2022 echo - -rwxr-xr-x 1 root root 41 Jan 24 02:43 egrep - -rwxr-xr-x 1 root root 67548 Sep 20 2022 false - -rwxr-xr-x 1 root root 41 Jan 24 02:43 fgrep - -rwxr-xr-x 1 root root 55748 Mar 22 21:02 findmnt - -rwsr-xr-x 1 root root 26208 Mar 22 20:15 fusermount - -rwxr-xr-x 1 root root 128608 Jan 24 02:43 grep - -rwxr-xr-x 2 root root 2346 Apr 9 2022 gunzip - -rwxr-xr-x 1 root root 6447 Apr 9 2022 gzexe - -rwxr-xr-x 1 root root 64220 Apr 9 2022 gzip - -rwxr-xr-x 1 root root 67032 Dec 19 01:33 hostname - -rwxr-xr-x 1 root root 67720 Sep 20 2022 ln - -rwxr-xr-x 1 root root 35132 Mar 22 21:51 login - -rwxr-xr-x 1 root root 133632 Sep 20 2022 ls - -rwxr-xr-x 1 root root 136808 Mar 22 21:02 lsblk - -rwxr-xr-x 1 root root 67800 Sep 20 2022 mkdir - -rwxr-xr-x 1 root root 67764 Sep 20 2022 mknod - -rwxr-xr-x 1 root root 67596 Sep 20 2022 mktemp - -rwxr-xr-x 1 root root 38504 Mar 22 21:02 more - -rwsr-xr-x 1 root root 38496 Mar 22 21:02 mount - -rwxr-xr-x 1 root root 9824 Mar 22 21:02 mountpoint - -rwxr-xr-x 1 root root 133532 Sep 20 2022 mv - lrwxrwxrwx 1 root root 8 Dec 19 01:33 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Apr 2 18:25 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 67608 Sep 20 2022 pwd - lrwxrwxrwx 1 root root 4 Apr 23 09:24 rbash -> bash - -rwxr-xr-x 1 root root 67600 Sep 20 2022 readlink - -rwxr-xr-x 1 root root 67672 Sep 20 2022 rm - -rwxr-xr-x 1 root root 67600 Sep 20 2022 rmdir - -rwxr-xr-x 1 root root 67400 Nov 2 2022 run-parts - -rwxr-xr-x 1 root root 133372 Jan 5 07:55 sed - lrwxrwxrwx 1 root root 4 Jan 5 01:20 sh -> dash - -rwxr-xr-x 1 root root 67584 Sep 20 2022 sleep - -rwxr-xr-x 1 root root 67644 Sep 20 2022 stty - -rwsr-xr-x 1 root root 50800 Mar 22 21:02 su - -rwxr-xr-x 1 root root 67584 Sep 20 2022 sync - -rwxr-xr-x 1 root root 336764 Apr 6 02:25 tar - -rwxr-xr-x 1 root root 67144 Nov 2 2022 tempfile - -rwxr-xr-x 1 root root 133224 Sep 20 2022 touch - -rwxr-xr-x 1 root root 67548 Sep 20 2022 true - -rwxr-xr-x 1 root root 9768 Mar 22 20:15 ulockmgr_server - -rwsr-xr-x 1 root root 22108 Mar 22 21:02 umount - -rwxr-xr-x 1 root root 67572 Sep 20 2022 uname - -rwxr-xr-x 2 root root 2346 Apr 9 2022 uncompress - -rwxr-xr-x 1 root root 133632 Sep 20 2022 vdir - -rwxr-xr-x 1 root root 42608 Mar 22 21:02 wdctl - lrwxrwxrwx 1 root root 8 Dec 19 01:33 ypdomainname -> hostname - -rwxr-xr-x 1 root root 1984 Apr 9 2022 zcat - -rwxr-xr-x 1 root root 1678 Apr 9 2022 zcmp - -rwxr-xr-x 1 root root 6460 Apr 9 2022 zdiff - -rwxr-xr-x 1 root root 29 Apr 9 2022 zegrep - -rwxr-xr-x 1 root root 29 Apr 9 2022 zfgrep - -rwxr-xr-x 1 root root 2081 Apr 9 2022 zforce - -rwxr-xr-x 1 root root 8103 Apr 9 2022 zgrep - -rwxr-xr-x 1 root root 2206 Apr 9 2022 zless - -rwxr-xr-x 1 root root 1842 Apr 9 2022 zmore - -rwxr-xr-x 1 root root 4577 Apr 9 2022 znew -I: user script /srv/workspace/pbuilder/18176/tmp/hooks/D02_print_environment finished + -rwxr-xr-x 1 root root 838488 Apr 24 11:24 bash + -rwxr-xr-x 3 root root 67144 Sep 19 2022 bunzip2 + -rwxr-xr-x 3 root root 67144 Sep 19 2022 bzcat + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzcmp -> bzdiff + -rwxr-xr-x 1 root root 2225 Sep 19 2022 bzdiff + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzegrep -> bzgrep + -rwxr-xr-x 1 root root 4893 Nov 28 2021 bzexe + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzfgrep -> bzgrep + -rwxr-xr-x 1 root root 3775 Sep 19 2022 bzgrep + -rwxr-xr-x 3 root root 67144 Sep 19 2022 bzip2 + -rwxr-xr-x 1 root root 67112 Sep 19 2022 bzip2recover + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzless -> bzmore + -rwxr-xr-x 1 root root 1297 Sep 19 2022 bzmore + -rwxr-xr-x 1 root root 67632 Sep 21 2022 cat + -rwxr-xr-x 1 root root 67676 Sep 21 2022 chgrp + -rwxr-xr-x 1 root root 67644 Sep 21 2022 chmod + -rwxr-xr-x 1 root root 67684 Sep 21 2022 chown + -rwxr-xr-x 1 root root 133532 Sep 21 2022 cp + -rwxr-xr-x 1 root root 132868 Jan 6 03:20 dash + -rwxr-xr-x 1 root root 133220 Sep 21 2022 date + -rwxr-xr-x 1 root root 67732 Sep 21 2022 dd + -rwxr-xr-x 1 root root 68104 Sep 21 2022 df + -rwxr-xr-x 1 root root 133632 Sep 21 2022 dir + -rwxr-xr-x 1 root root 59128 Mar 23 23:02 dmesg + lrwxrwxrwx 1 root root 8 Dec 20 03:33 dnsdomainname -> hostname + lrwxrwxrwx 1 root root 8 Dec 20 03:33 domainname -> hostname + -rwxr-xr-x 1 root root 67560 Sep 21 2022 echo + -rwxr-xr-x 1 root root 41 Jan 25 04:43 egrep + -rwxr-xr-x 1 root root 67548 Sep 21 2022 false + -rwxr-xr-x 1 root root 41 Jan 25 04:43 fgrep + -rwxr-xr-x 1 root root 55748 Mar 23 23:02 findmnt + -rwsr-xr-x 1 root root 26208 Mar 23 22:15 fusermount + -rwxr-xr-x 1 root root 128608 Jan 25 04:43 grep + -rwxr-xr-x 2 root root 2346 Apr 10 2022 gunzip + -rwxr-xr-x 1 root root 6447 Apr 10 2022 gzexe + -rwxr-xr-x 1 root root 64220 Apr 10 2022 gzip + -rwxr-xr-x 1 root root 67032 Dec 20 03:33 hostname + -rwxr-xr-x 1 root root 67720 Sep 21 2022 ln + -rwxr-xr-x 1 root root 35132 Mar 23 23:51 login + -rwxr-xr-x 1 root root 133632 Sep 21 2022 ls + -rwxr-xr-x 1 root root 136808 Mar 23 23:02 lsblk + -rwxr-xr-x 1 root root 67800 Sep 21 2022 mkdir + -rwxr-xr-x 1 root root 67764 Sep 21 2022 mknod + -rwxr-xr-x 1 root root 67596 Sep 21 2022 mktemp + -rwxr-xr-x 1 root root 38504 Mar 23 23:02 more + -rwsr-xr-x 1 root root 38496 Mar 23 23:02 mount + -rwxr-xr-x 1 root root 9824 Mar 23 23:02 mountpoint + -rwxr-xr-x 1 root root 133532 Sep 21 2022 mv + lrwxrwxrwx 1 root root 8 Dec 20 03:33 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Apr 3 20:25 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 67608 Sep 21 2022 pwd + lrwxrwxrwx 1 root root 4 Apr 24 11:24 rbash -> bash + -rwxr-xr-x 1 root root 67600 Sep 21 2022 readlink + -rwxr-xr-x 1 root root 67672 Sep 21 2022 rm + -rwxr-xr-x 1 root root 67600 Sep 21 2022 rmdir + -rwxr-xr-x 1 root root 67400 Nov 3 2022 run-parts + -rwxr-xr-x 1 root root 133372 Jan 6 09:55 sed + lrwxrwxrwx 1 root root 9 Jun 5 20:04 sh -> /bin/bash + -rwxr-xr-x 1 root root 67584 Sep 21 2022 sleep + -rwxr-xr-x 1 root root 67644 Sep 21 2022 stty + -rwsr-xr-x 1 root root 50800 Mar 23 23:02 su + -rwxr-xr-x 1 root root 67584 Sep 21 2022 sync + -rwxr-xr-x 1 root root 336764 Apr 7 04:25 tar + -rwxr-xr-x 1 root root 67144 Nov 3 2022 tempfile + -rwxr-xr-x 1 root root 133224 Sep 21 2022 touch + -rwxr-xr-x 1 root root 67548 Sep 21 2022 true + -rwxr-xr-x 1 root root 9768 Mar 23 22:15 ulockmgr_server + -rwsr-xr-x 1 root root 22108 Mar 23 23:02 umount + -rwxr-xr-x 1 root root 67572 Sep 21 2022 uname + -rwxr-xr-x 2 root root 2346 Apr 10 2022 uncompress + -rwxr-xr-x 1 root root 133632 Sep 21 2022 vdir + -rwxr-xr-x 1 root root 42608 Mar 23 23:02 wdctl + lrwxrwxrwx 1 root root 8 Dec 20 03:33 ypdomainname -> hostname + -rwxr-xr-x 1 root root 1984 Apr 10 2022 zcat + -rwxr-xr-x 1 root root 1678 Apr 10 2022 zcmp + -rwxr-xr-x 1 root root 6460 Apr 10 2022 zdiff + -rwxr-xr-x 1 root root 29 Apr 10 2022 zegrep + -rwxr-xr-x 1 root root 29 Apr 10 2022 zfgrep + -rwxr-xr-x 1 root root 2081 Apr 10 2022 zforce + -rwxr-xr-x 1 root root 8103 Apr 10 2022 zgrep + -rwxr-xr-x 1 root root 2206 Apr 10 2022 zless + -rwxr-xr-x 1 root root 1842 Apr 10 2022 zmore + -rwxr-xr-x 1 root root 4577 Apr 10 2022 znew +I: user script /srv/workspace/pbuilder/18998/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -478,7 +510,7 @@ Get: 216 http://deb.debian.org/debian bookworm/main armhf libzmq5 armhf 4.3.4-6 [233 kB] Get: 217 http://deb.debian.org/debian bookworm/main armhf libzmq3-dev armhf 4.3.4-6 [463 kB] Get: 218 http://deb.debian.org/debian bookworm/main armhf libzmq-ffi-perl all 1.18-2 [31.7 kB] -Fetched 94.1 MB in 9s (10.9 MB/s) +Fetched 94.1 MB in 3s (27.4 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 ... 19324 files and directories currently installed.) @@ -1371,8 +1403,19 @@ Writing extended state information... Building tag database... -> Finished parsing the build-deps +Reading package lists... +Building dependency tree... +Reading state information... +usrmerge is already the newest version (35). +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/analizo-1.25.4/ && 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.4-2_source.changes +I: user script /srv/workspace/pbuilder/18998/tmp/hooks/A99_set_merged_usr starting +Re-configuring usrmerge... +removed '/etc/unsupported-skip-usrmerge-conversion' +The system has been successfully converted. +I: user script /srv/workspace/pbuilder/18998/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/analizo-1.25.4/ && 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.4-2_source.changes dpkg-buildpackage: info: source package analizo dpkg-buildpackage: info: source version 1.25.4-2 dpkg-buildpackage: info: source distribution unstable @@ -1397,74 +1440,74 @@ Writing Makefile for Analizo Writing MYMETA.yml and MYMETA.json dh_auto_build - make -j3 + make -j4 make[1]: Entering directory '/build/analizo-1.25.4' -cp lib/Analizo/Command/graph.pm blib/lib/Analizo/Command/graph.pm -cp lib/Analizo/Batch/Output.pm blib/lib/Analizo/Batch/Output.pm +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 lib/Analizo/Batch/Output/DB.pm blib/lib/Analizo/Batch/Output/DB.pm cp lib/Analizo/Batch/Job/Directories.pm blib/lib/Analizo/Batch/Job/Directories.pm -cp lib/Analizo/Batch/Runner.pm blib/lib/Analizo/Batch/Runner.pm cp lib/Analizo/Extractor.pm blib/lib/Analizo/Extractor.pm cp lib/Analizo/Command/files_graph.pm blib/lib/Analizo/Command/files_graph.pm -cp lib/Analizo/Metric/AfferentConnections.pm blib/lib/Analizo/Metric/AfferentConnections.pm -cp lib/Analizo/Command/metrics.pm blib/lib/Analizo/Command/metrics.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/Runner/Sequential.pm blib/lib/Analizo/Batch/Runner/Sequential.pm +cp lib/Analizo/Command/metrics_batch.pm blib/lib/Analizo/Command/metrics_batch.pm +cp lib/Analizo/Batch/Output/CSV.pm blib/lib/Analizo/Batch/Output/CSV.pm cp lib/Analizo/Metric/AverageNumberOfParameters.pm blib/lib/Analizo/Metric/AverageNumberOfParameters.pm -cp lib/Analizo/Batch.pm blib/lib/Analizo/Batch.pm -cp lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm blib/lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm +cp lib/Analizo/Batch/Git.pm blib/lib/Analizo/Batch/Git.pm +cp lib/Analizo/GlobalMetrics.pm blib/lib/Analizo/GlobalMetrics.pm cp lib/Analizo/LanguageFilter.pm blib/lib/Analizo/LanguageFilter.pm -cp lib/Analizo/Batch/Job/Git.pm blib/lib/Analizo/Batch/Job/Git.pm -cp lib/Analizo/Command/metrics_batch.pm blib/lib/Analizo/Command/metrics_batch.pm +cp lib/Analizo/Batch/Directories.pm blib/lib/Analizo/Batch/Directories.pm +cp lib/Analizo/FilenameFilter.pm blib/lib/Analizo/FilenameFilter.pm cp lib/Analizo/Command/metrics_history.pm blib/lib/Analizo/Command/metrics_history.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/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/Batch/Runner/Parallel.pm blib/lib/Analizo/Batch/Runner/Parallel.pm +cp lib/Analizo.pm blib/lib/Analizo.pm +cp lib/Analizo/Batch/Job.pm blib/lib/Analizo/Batch/Job.pm +cp lib/Analizo/Command/metrics.pm blib/lib/Analizo/Command/metrics.pm +cp lib/Analizo/Batch/Output.pm blib/lib/Analizo/Batch/Output.pm +cp lib/Analizo/GlobalMetric/TotalAbstractClasses.pm blib/lib/Analizo/GlobalMetric/TotalAbstractClasses.pm +cp lib/Analizo/Batch.pm blib/lib/Analizo/Batch.pm +cp lib/Analizo/Command/help.pm blib/lib/Analizo/Command/help.pm cp lib/Analizo/Metric/AverageCycloComplexity.pm blib/lib/Analizo/Metric/AverageCycloComplexity.pm +cp lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm blib/lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm cp lib/Analizo/Command/tree_evolution.pm blib/lib/Analizo/Command/tree_evolution.pm -cp lib/Analizo/Batch/Runner/Parallel.pm blib/lib/Analizo/Batch/Runner/Parallel.pm -cp lib/Analizo/Batch/Directories.pm blib/lib/Analizo/Batch/Directories.pm cp lib/Analizo/Command.pm blib/lib/Analizo/Command.pm +cp lib/Analizo/Batch/Job/Git.pm blib/lib/Analizo/Batch/Job/Git.pm +cp lib/Analizo/Extractor/Doxyparse.pm blib/lib/Analizo/Extractor/Doxyparse.pm +cp lib/Analizo/Metric/AfferentConnections.pm blib/lib/Analizo/Metric/AfferentConnections.pm cp lib/Analizo/Metric/AverageMethodLinesOfCode.pm blib/lib/Analizo/Metric/AverageMethodLinesOfCode.pm -cp lib/Analizo/Batch/Output/DB.pm blib/lib/Analizo/Batch/Output/DB.pm -cp lib/Analizo/Batch/Output/CSV.pm blib/lib/Analizo/Batch/Output/CSV.pm -cp lib/Analizo/GlobalMetric/TotalAbstractClasses.pm blib/lib/Analizo/GlobalMetric/TotalAbstractClasses.pm -cp lib/Analizo/GlobalMetric/ChangeCost.pm blib/lib/Analizo/GlobalMetric/ChangeCost.pm -cp lib/Analizo/Filter/Client.pm blib/lib/Analizo/Filter/Client.pm -cp lib/Analizo.pm blib/lib/Analizo.pm -cp lib/Analizo/FilenameFilter.pm blib/lib/Analizo/FilenameFilter.pm -cp lib/Analizo/GlobalMetrics.pm blib/lib/Analizo/GlobalMetrics.pm -cp lib/Analizo/Batch/Git.pm blib/lib/Analizo/Batch/Git.pm -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 lib/Analizo/Metric/ResponseForClass.pm blib/lib/Analizo/Metric/ResponseForClass.pm -cp lib/Analizo/ModuleMetrics.pm blib/lib/Analizo/ModuleMetrics.pm -cp lib/Analizo/Metric/LinesOfCode.pm blib/lib/Analizo/Metric/LinesOfCode.pm cp lib/Analizo/Metric/NumberOfAttributes.pm blib/lib/Analizo/Metric/NumberOfAttributes.pm -cp lib/Analizo/ModuleMetric.pm blib/lib/Analizo/ModuleMetric.pm -cp lib/Analizo/Metric/DepthOfInheritanceTree.pm blib/lib/Analizo/Metric/DepthOfInheritanceTree.pm -cp lib/Analizo/Metric/LackOfCohesionOfMethods.pm blib/lib/Analizo/Metric/LackOfCohesionOfMethods.pm +cp lib/Analizo/ModuleMetrics.pm blib/lib/Analizo/ModuleMetrics.pm cp lib/Test/Analizo/BDD/Cucumber/Extension.pm blib/lib/Test/Analizo/BDD/Cucumber/Extension.pm -cp lib/Analizo/Metric/NumberOfPublicMethods.pm blib/lib/Analizo/Metric/NumberOfPublicMethods.pm -cp lib/Test/Analizo/Class.pm blib/lib/Test/Analizo/Class.pm -cp lib/Test/Analizo/Git.pm blib/lib/Test/Analizo/Git.pm -cp profile.pl blib/lib/profile.pl -cp lib/Test/Analizo.pm blib/lib/Test/Analizo.pm -cp lib/Analizo/Metric/MaximumMethodLinesOfCode.pm blib/lib/Analizo/Metric/MaximumMethodLinesOfCode.pm -cp lib/Analizo/Metrics.pm blib/lib/Analizo/Metrics.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/NumberOfMethods.pm blib/lib/Analizo/Metric/NumberOfMethods.pm +cp lib/Analizo/Metrics.pm blib/lib/Analizo/Metrics.pm cp lib/Analizo/Metric/CouplingBetweenObjects.pm blib/lib/Analizo/Metric/CouplingBetweenObjects.pm +cp lib/Analizo/Metric/LackOfCohesionOfMethods.pm blib/lib/Analizo/Metric/LackOfCohesionOfMethods.pm +cp profile.pl blib/lib/profile.pl +cp lib/Analizo/Metric/NumberOfPublicMethods.pm blib/lib/Analizo/Metric/NumberOfPublicMethods.pm +cp lib/Analizo/Metric/DepthOfInheritanceTree.pm blib/lib/Analizo/Metric/DepthOfInheritanceTree.pm +cp lib/Analizo/Metric/MaximumMethodLinesOfCode.pm blib/lib/Analizo/Metric/MaximumMethodLinesOfCode.pm cp lib/Analizo/Metric/NumberOfPublicAttributes.pm blib/lib/Analizo/Metric/NumberOfPublicAttributes.pm cp lib/Analizo/Model.pm blib/lib/Analizo/Model.pm +cp lib/Analizo/ModuleMetric.pm blib/lib/Analizo/ModuleMetric.pm +cp lib/Test/Analizo/Git.pm blib/lib/Test/Analizo/Git.pm +cp lib/Analizo/Metric/StructuralComplexity.pm blib/lib/Analizo/Metric/StructuralComplexity.pm +cp lib/Analizo/Metric/LinesOfCode.pm blib/lib/Analizo/Metric/LinesOfCode.pm +cp lib/Test/Analizo/Class.pm blib/lib/Test/Analizo/Class.pm +cp lib/Analizo/Metric/NumberOfChildren.pm blib/lib/Analizo/Metric/NumberOfChildren.pm +cp lib/Test/Analizo.pm blib/lib/Test/Analizo.pm +cp lib/Analizo/Metric/ResponseForClass.pm blib/lib/Analizo/Metric/ResponseForClass.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/analizo-1.25.4' dh_auto_test - make -j3 test TEST_VERBOSE=1 + make -j4 test TEST_VERBOSE=1 make[1]: Entering directory '/build/analizo-1.25.4' -Skip blib/lib/auto/share/dist/Analizo/bash-completion/analizo (unchanged) Skip blib/lib/auto/share/dist/Analizo/README (unchanged) +Skip blib/lib/auto/share/dist/Analizo/bash-completion/analizo (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 @@ -1548,7 +1591,7 @@ 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 11 - must not analyze commit containing only (output.cc,prog.cc,output.h) 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 @@ -2877,2316 +2920,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 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 1 - Given I copy t/samples/mixed into a temporary directory +# 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 1 - Given I am in t/samples/hello_world/ # -ok 2 - And I create a file called .analizo with the following content -# """metrics: --language java""" -ok 3 - When I run "analizo metrics ." +ok 2 - When I run "analizo metrics-batch" # -ok 4 - Then the output must not match "native_backend.c" +ok 3 - Then the output must match "I: Processed c." # -ok 5 - And the output must match "UI.java" +ok 4 - And the output must match "I: Processed cpp." # -ok 6 - And the exit status must be 0 +ok 5 - And the output must match "I: Processed java." # -# Scenario all others -ok 7 - Given I change to an empty temporary directory +# Scenario summarizing +ok 6 - Given I am in t/samples/hello_world/ # -ok 8 - And I create a file called .analizo with the following content -# """: --help""" -ok 9 - When I run "analizo graph" +ok 7 - When I run "analizo metrics-batch --quiet -o data.csv && cat data.csv && rm -f *.csv" # -ok 10 - Then the output must match "analizo graph is part of the analizo suite." +ok 8 - Then the output must match "^id," # -# Scenario all others -ok 11 - Given I change to an empty temporary directory +ok 9 - And the output must not match ",---," # -ok 12 - And I create a file called .analizo with the following content -# """: --help""" -ok 13 - When I run "analizo metrics" +ok 10 - And the output must match "c," # -ok 14 - Then the output must match "analizo metrics is part of the analizo suite." +ok 11 - And the output must match "cpp," # -# Scenario all others -ok 15 - Given I change to an empty temporary directory +ok 12 - And the output must match "java," # -ok 16 - And I create a file called .analizo with the following content -# """: --help""" -ok 17 - When I run "analizo metrics-batch" +ok 13 - And the output must not match "I: Processed" # -ok 18 - Then the output must match "analizo metrics-batch is part of the analizo suite." +# Scenario support for parallel processing +ok 14 - Given I copy t/samples/hello_world/* into a temporary directory # -# Scenario all others -ok 19 - Given I change to an empty temporary directory +ok 15 - When I run "analizo metrics-batch -q -o sequential.csv" # -ok 20 - And I create a file called .analizo with the following content -# """: --help""" -ok 21 - When I run "analizo metrics-history" +ok 16 - And I run "analizo metrics-batch -q -o parallel.csv -p 2" # -ok 22 - Then the output must match "analizo metrics-history is part of the analizo suite." +ok 17 - And I run "sort sequential.csv > sequential-sorted.csv" # -# Scenario all others -ok 23 - Given I change to an empty temporary directory +ok 18 - And I run "sort parallel.csv > parallel-sorted.csv" # -ok 24 - And I create a file called .analizo with the following content -# """: --help""" -ok 25 - When I run "analizo tree-evolution" +ok 19 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv" # -ok 26 - Then the output must match "analizo tree-evolution is part of the analizo suite." +ok 20 - Then the output must not match "---" # -# Scenario all others -ok 27 - Given I change to an empty temporary directory +ok 21 - Then the exit status must be 0 # -ok 28 - And I create a file called .analizo with the following content -# """: --help""" -ok 29 - When I run "analizo files-graph" +# Scenario passing two input directories as argument +ok 22 - Given I copy t/samples/hello_world/* into a temporary directory # -ok 30 - Then the output must match "analizo files-graph is part of the analizo suite." +ok 23 - When I run "analizo metrics-batch --quiet -o data.csv cpp java" # -# Scenario all others -ok 31 - Given I change to an empty temporary directory +ok 24 - Then the exit status must be 0 # -ok 32 - And I create a file called .analizo with the following content -# """: --help""" -ok 33 - When I run "analizo help" +ok 25 - And the file "c-details.csv" should not exist # -ok 34 - Then the output must match "analizo help is part of the analizo suite." +ok 26 - And the file "cpp-details.csv" should exist # -# 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 35 - When I run "analizo metrics t/samples/animals/cpp" +ok 27 - And the file "java-details.csv" should exist # -ok 36 - Then analizo must report that file animal.h declares module Animal +# Scenario passing one input directory as argument +ok 28 - Given I copy t/samples/hello_world/* into a temporary directory # -ok 37 - And analizo must report that file cat.cc declares module Cat +ok 29 - When I run "analizo metrics-batch --quiet -o data.csv cpp" # -ok 38 - And analizo must report that file cat.h declares module Cat +ok 30 - Then the exit status must be 0 # -ok 39 - And analizo must report that file cat.cc not declares module Dog +ok 31 - And the file "c-details.csv" should not exist # -ok 40 - And analizo must report that file cat.h not declares module Dog +ok 32 - And the file "cpp-details.csv" should exist # -# Scenario C++, running against current directory -ok 41 - Given I am in t/samples/animals/cpp +ok 33 - And the file "java-details.csv" should not exist # -ok 42 - When I run "analizo metrics ." +# 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 34 - Given I am in t/samples/void/ # -ok 43 - Then analizo must report that file animal.h declares module Animal +ok 35 - When I run "analizo metrics ." # -ok 44 - And analizo must report that file cat.cc declares module Cat +ok 36 - Then analizo must report that module main has anpm = 0 # -ok 45 - And analizo must report that file cat.h declares module Cat +# 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 37 - Given I am in t/samples/animals/cpp # -# Scenario Java -ok 46 - When I run "analizo metrics t/samples/animals/java" +ok 38 - When I run "analizo files-graph ." # -ok 47 - Then analizo must report that file Animal.java declares module Animal +ok 39 - Then analizo must report that "main" depends on "animal" # -# Scenario C -ok 48 - Given I am in t/samples/hello_world/c +# Scenario relation between function call +ok 40 - Given I am in t/samples/animals/java # -ok 49 - When I run "analizo metrics ." +ok 41 - When I run "analizo files-graph ." # -ok 50 - Then analizo must report that module hello_world has _filename = [hello_world.c,hello_world.h] +ok 42 - Then analizo must report that "Main" depends on "Animal" # -ok 51 - And analizo must report that file hello_world.c declares module hello_world +# Scenario relation between function call +ok 43 - Given I am in t/samples/animals/csharp # -ok 52 - And analizo must report that file hello_world.h declares module hello_world +ok 44 - When I run "analizo files-graph ." # -# Scenario CSharp hello_world -ok 53 - Given I am in t/samples/hello_world/csharp +ok 45 - Then analizo must report that "Main" depends on "Animal" # -ok 54 - When I run "analizo metrics ." +# Scenario relation between inheritance +ok 46 - Given I am in t/samples/animals/cpp # -ok 55 - Then analizo must report that module HelloWorld has _filename = [HelloWorld.cs] +ok 47 - When I run "analizo files-graph ." # -# Scenario CSharp polygons -ok 56 - Given I am in t/samples/polygons/csharp +ok 48 - Then analizo must report that "dog" depends on "mammal" # -ok 57 - When I run "analizo metrics ." +# Scenario relation between inheritance +ok 49 - Given I am in t/samples/animals/java # -ok 58 - Then analizo must report that file Polygon.cs declares module Polygon +ok 50 - When I run "analizo files-graph ." # -ok 59 - And analizo must report that file Rect.cs declares module Rect +ok 51 - Then analizo must report that "Dog" depends on "Mammal" # -ok 60 - And analizo must report that file Triangle.cs declares module Triangle +# Scenario relation between inheritance +ok 52 - Given I am in t/samples/animals/csharp # -# Scenario Java Generics WildCard sample -ok 61 - Given I am in t/samples/wildcard +ok 53 - When I run "analizo files-graph ." # -ok 62 - When I run "analizo metrics ." +ok 54 - Then analizo must report that "Dog" depends on "Mammal" # -ok 63 - Then analizo must report that file WildcardClass.java declares module WildcardClass +# Scenario relation between inheritance +ok 55 - Given I am in t/samples/animals/cpp # -ok 64 - And analizo must report that file GenericClass.java declares module GenericClass +ok 56 - When I run "analizo files-graph ." # -# Scenario Java Enumeration sample -ok 65 - Given I am in t/samples/enumeration +ok 57 - Then analizo must report that "mammal" depends on "animal" # -ok 66 - When I run "analizo metrics ." +# Scenario relation between inheritance +ok 58 - Given I am in t/samples/animals/java # -ok 67 - Then analizo must report that file Main.java declares module Main::MyEnumeration +ok 59 - When I run "analizo files-graph ." # -ok 68 - And analizo must report that file Enumeration.java declares module Enumeration +ok 60 - Then analizo must report that "Mammal" depends on "Animal" # -# 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 69 - Given I am in t/samples/animals/cpp +# Scenario relation between inheritance +ok 61 - Given I am in t/samples/animals/csharp # -ok 70 - When I run "analizo files-graph ." +ok 62 - When I run "analizo files-graph ." # -ok 71 - Then analizo must report that "main" depends on "animal" +ok 63 - Then analizo must report that "Mammal" depends on "Animal" # -# Scenario relation between function call -ok 72 - Given I am in t/samples/animals/java +# 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 64 - Given I am in t/samples/android-framework/android-5.1.1_r38 # -ok 73 - When I run "analizo files-graph ." +ok 65 - When I run "analizo metrics ." # -ok 74 - Then analizo must report that "Main" depends on "Animal" +ok 66 - Then the exit status must be 0 # -# Scenario relation between function call -ok 75 - Given I am in t/samples/animals/csharp +# Scenario don't duplicate YAML keys parsing AudioTrackShared.cpp from android 5.1.1 +ok 67 - Given I am in t/samples/android-framework/android-5.1.1_r38 # -ok 76 - When I run "analizo files-graph ." +ok 68 - When I run "analizo metrics ." # -ok 77 - Then analizo must report that "Main" depends on "Animal" +ok 69 - Then analizo must not emit a warning matching "YAML_LOAD_WARN_DUPLICATE_KEY" # -# Scenario relation between inheritance -ok 78 - Given I am in t/samples/animals/cpp +# Scenario don't abort parsing mlpack 3.0.0 +ok 70 - Given I am in t/samples/mlpack-3.0.0 # -ok 79 - When I run "analizo files-graph ." +ok 71 - When I run "analizo metrics ." # -ok 80 - Then analizo must report that "dog" depends on "mammal" +ok 72 - Then analizo must not emit a warning matching "Aborted" # -# Scenario relation between inheritance -ok 81 - Given I am in t/samples/animals/java +ok 73 - And the exit status must be 0 # -ok 82 - When I run "analizo files-graph ." +# Scenario don't die parsing kdelibs warning about unknown escape character +ok 74 - Given I am in t/samples/kdelibs # -ok 83 - Then analizo must report that "Dog" depends on "Mammal" +ok 75 - When I run "analizo metrics ." # -# Scenario relation between inheritance -ok 84 - Given I am in t/samples/animals/csharp +ok 76 - Then analizo must not emit a warning matching "Error" # -ok 85 - When I run "analizo files-graph ." +ok 77 - And the exit status must be 0 # -ok 86 - Then analizo must report that "Dog" depends on "Mammal" +# Scenario don't die parsing mod_suexec.h from http 2.4.38 +ok 78 - Given I am in t/samples/httpd-2.4.38 # -# Scenario relation between inheritance -ok 87 - Given I am in t/samples/animals/cpp +ok 79 - When I run "analizo metrics ." # -ok 88 - When I run "analizo files-graph ." +ok 80 - Then analizo must not emit a warning matching "Not a HASH reference" # -ok 89 - Then analizo must report that "mammal" depends on "animal" +ok 81 - And the exit status must be 0 # -# Scenario relation between inheritance -ok 90 - Given I am in t/samples/animals/java +# Scenario allow dot on module filename +ok 82 - Given I am in t/samples/sample_basic/c # -ok 91 - When I run "analizo files-graph ." +ok 83 - When I run "analizo metrics ." # -ok 92 - Then analizo must report that "Mammal" depends on "Animal" +ok 84 - Then analizo must report that file module1.c declares module module1 # -# Scenario relation between inheritance -ok 93 - Given I am in t/samples/animals/csharp +# 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 85 - Given I am in t/samples/multidir/cpp # -ok 94 - When I run "analizo files-graph ." +ok 86 - When I run "analizo metrics --exclude test ." # -ok 95 - Then analizo must report that "Mammal" depends on "Animal" +ok 87 - Then the output must match "module: HelloWorld" # -# 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 96 - When I explode t/samples/tree-evolution.tar.gz +ok 88 - And the output must not match "module: hello_test" # -ok 97 - And I run "analizo tree-evolution" +# Scenario excluding test directory +ok 89 - Given I am in t/samples/multidir/csharp # -ok 98 - Then the output lines must match "\# 073290fbad0254793bd3ecfb97654c04368d0039\\nsrc\\n\#" +ok 90 - When I run "analizo metrics --exclude test ." # -ok 99 - Then the output lines must match "\# 85f7db08f7b7b0b62e3c0023b2743d529b0d5b4b\\nsrc\\nsrc/input\\n\#" +ok 91 - Then the output must match "module: HelloWorld" # -ok 100 - Then the output lines must match "\# f41cf7d0351e812285efd60c6d957c330b1f61a1\\nsrc\\nsrc/input\\nsrc/output" +ok 92 - And the output must not match "module: hello_test" # -# 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 101 - Given I am in t/samples/void/ +# Scenario excluding a list of directories +ok 93 - Given I am in t/samples/multidir/cpp # -ok 102 - When I run "analizo metrics ." +ok 94 - When I run "analizo metrics --exclude test:src ." # -ok 103 - Then analizo must report that module main has anpm = 0 +ok 95 - Then the output must not match "module: 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 104 - When I explode t/samples/evolution.tar.gz +ok 96 - And the output must not match "module: hello_test" # -ok 105 - And I run "analizo metrics-history -f db -o data.db" +# Scenario excluding a list of directories +ok 97 - Given I am in t/samples/multidir/csharp +# +ok 98 - When I run "analizo metrics --exclude test:src ." +# +ok 99 - Then the output must not match "module: HelloWorld" +# +ok 100 - And the output must not match "module: hello_test" +# +# Scenario excluding src directory +ok 101 - Given I am in t/samples/multidir/cpp # -ok 106 - Then the exit status must be 0 +ok 102 - When I run "analizo metrics --exclude src ." # -ok 107 - When I run "select * from modules" on database "data.db" +ok 103 - Then the output must match "module: hello_test" # -ok 108 - Then the output must match "Input" +ok 104 - And the output must not match "module: HelloWorld" # -ok 109 - And the output must match "Output" +# Scenario excluding src directory +ok 105 - Given I am in t/samples/multidir/csharp +# +ok 106 - When I run "analizo metrics --exclude src ." +# +ok 107 - Then the output must match "module: hello_test" # -ok 110 - And the output must match "prog" +ok 108 - And the output must not match "module: HelloWorld" # # 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 111 - Given I am in t/samples/hello_world/c +ok 109 - Given I am in t/samples/hello_world/c # -ok 112 - When I run "analizo graph --modules ." +ok 110 - When I run "analizo graph --modules ." # -ok 113 - Then analizo must report that "main" depends on "hello_world" +ok 111 - Then analizo must report that "main" depends on "hello_world" # # Scenario dependency between modules -ok 114 - Given I am in t/samples/hello_world/cpp +ok 112 - Given I am in t/samples/hello_world/cpp # -ok 115 - When I run "analizo graph --modules ." +ok 113 - When I run "analizo graph --modules ." # -ok 116 - Then analizo must report that "main" depends on "HelloWorld" +ok 114 - Then analizo must report that "main" depends on "HelloWorld" # # Scenario dependency between modules -ok 117 - Given I am in t/samples/hello_world/java +ok 115 - Given I am in t/samples/hello_world/java # -ok 118 - When I run "analizo graph --modules ." +ok 116 - When I run "analizo graph --modules ." # -ok 119 - Then analizo must report that "Main" depends on "HelloWorld" +ok 117 - Then analizo must report that "Main" depends on "HelloWorld" # # Scenario dependency between modules -ok 120 - Given I am in t/samples/hello_world/csharp +ok 118 - Given I am in t/samples/hello_world/csharp # -ok 121 - When I run "analizo graph --modules ." +ok 119 - When I run "analizo graph --modules ." # -ok 122 - Then analizo must report that "main" depends on "HelloWorld" +ok 120 - Then analizo must report that "main" depends on "HelloWorld" # # Scenario dependency between specific functions -ok 123 - Given I am in t/samples/hello_world/c +ok 121 - Given I am in t/samples/hello_world/c # -ok 124 - When I run "analizo graph ." +ok 122 - When I run "analizo graph ." # -ok 125 - Then analizo must report that "main::main()" depends on "hello_world::hello_world_say(hello_world *)" +ok 123 - Then analizo must report that "main::main()" depends on "hello_world::hello_world_say(hello_world *)" # -ok 126 - And analizo must report that "main::main()" depends on "hello_world::hello_world_destroy(hello_world *)" +ok 124 - And analizo must report that "main::main()" depends on "hello_world::hello_world_destroy(hello_world *)" # # Scenario dependency between specific functions -ok 127 - Given I am in t/samples/hello_world/cpp +ok 125 - Given I am in t/samples/hello_world/cpp # -ok 128 - When I run "analizo graph ." +ok 126 - When I run "analizo graph ." # -ok 129 - Then analizo must report that "main::main()" depends on "HelloWorld::say()" +ok 127 - Then analizo must report that "main::main()" depends on "HelloWorld::say()" # -ok 130 - And analizo must report that "main::main()" depends on "HelloWorld::destroy()" +ok 128 - And analizo must report that "main::main()" depends on "HelloWorld::destroy()" # # Scenario dependency between specific functions -ok 131 - Given I am in t/samples/hello_world/java +ok 129 - Given I am in t/samples/hello_world/java # -ok 132 - When I run "analizo graph ." +ok 130 - When I run "analizo graph ." # -ok 133 - Then analizo must report that "Main::main(String[])" depends on "HelloWorld::say()" +ok 131 - Then analizo must report that "Main::main(String[])" depends on "HelloWorld::say()" # -ok 134 - And analizo must report that "Main::main(String[])" depends on "HelloWorld::destroy()" +ok 132 - And analizo must report that "Main::main(String[])" depends on "HelloWorld::destroy()" # # Scenario dependency between specific functions -ok 135 - Given I am in t/samples/hello_world/csharp +ok 133 - Given I am in t/samples/hello_world/csharp # -ok 136 - When I run "analizo graph ." +ok 134 - When I run "analizo graph ." # -ok 137 - Then analizo must report that "main::Main()" depends on "HelloWorld::say()" +ok 135 - Then analizo must report that "main::Main()" depends on "HelloWorld::say()" # -ok 138 - And analizo must report that "main::Main()" depends on "HelloWorld::destroy()" +ok 136 - And analizo must report that "main::Main()" depends on "HelloWorld::destroy()" # # Scenario intra-module dependencies -ok 139 - Given I am in t/samples/hello_world/c +ok 137 - Given I am in t/samples/hello_world/c # -ok 140 - When I run "analizo graph ." +ok 138 - When I run "analizo graph ." # -ok 141 - Then analizo must report that "hello_world::hello_world_say(hello_world *)" depends on "hello_world::_hello_world::id" +ok 139 - Then analizo must report that "hello_world::hello_world_say(hello_world *)" depends on "hello_world::_hello_world::id" # -ok 142 - And analizo must report that "hello_world::hello_world_destroy(hello_world *)" depends on "hello_world::_hello_world::id" +ok 140 - And analizo must report that "hello_world::hello_world_destroy(hello_world *)" depends on "hello_world::_hello_world::id" # # Scenario intra-module dependencies -ok 143 - Given I am in t/samples/hello_world/cpp +ok 141 - Given I am in t/samples/hello_world/cpp # -ok 144 - When I run "analizo graph ." +ok 142 - When I run "analizo graph ." # -ok 145 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id" +ok 143 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id" # -ok 146 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id" +ok 144 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id" # # Scenario intra-module dependencies -ok 147 - Given I am in t/samples/hello_world/java +ok 145 - Given I am in t/samples/hello_world/java # -ok 148 - When I run "analizo graph ." +ok 146 - When I run "analizo graph ." # -ok 149 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id" +ok 147 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id" # -ok 150 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id" +ok 148 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id" # # Scenario intra-module dependencies -ok 151 - Given I am in t/samples/hello_world/csharp +ok 149 - Given I am in t/samples/hello_world/csharp # -ok 152 - When I run "analizo graph ." +ok 150 - When I run "analizo graph ." # -ok 153 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id" +ok 151 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id" # -ok 154 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id" +ok 152 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id" # # Scenario some metrics -ok 155 - Given I am in t/samples/hello_world/c +ok 153 - Given I am in t/samples/hello_world/c # -ok 156 - When I run "analizo metrics ." +ok 154 - When I run "analizo metrics ." # -ok 157 - Then analizo must report that the project has total_modules = 2 +ok 155 - Then analizo must report that the project has total_modules = 2 # -ok 158 - And analizo must report that module main has nom = 1 +ok 156 - And analizo must report that module main has nom = 1 # -ok 159 - And analizo must report that module hello_world has npm = 3 +ok 157 - And analizo must report that module hello_world has npm = 3 # -ok 160 - And analizo must report that module hello_world has nom = 3 +ok 158 - And analizo must report that module hello_world has nom = 3 # -ok 161 - And analizo must report that module hello_world has npa = 2 +ok 159 - And analizo must report that module hello_world has npa = 2 # # Scenario some metrics -ok 162 - Given I am in t/samples/hello_world/cpp +ok 160 - Given I am in t/samples/hello_world/cpp # -ok 163 - When I run "analizo metrics ." +ok 161 - When I run "analizo metrics ." # -ok 164 - Then analizo must report that the project has total_modules = 2 +ok 162 - Then analizo must report that the project has total_modules = 2 # -ok 165 - And analizo must report that module main has nom = 1 +ok 163 - And analizo must report that module main has nom = 1 # -ok 166 - And analizo must report that module HelloWorld has npm = 3 +ok 164 - And analizo must report that module HelloWorld has npm = 3 # -ok 167 - And analizo must report that module HelloWorld has nom = 4 +ok 165 - And analizo must report that module HelloWorld has nom = 4 # -ok 168 - And analizo must report that module HelloWorld has npa = 1 +ok 166 - And analizo must report that module HelloWorld has npa = 1 # # Scenario some metrics -ok 169 - Given I am in t/samples/hello_world/java +ok 167 - Given I am in t/samples/hello_world/java # -ok 170 - When I run "analizo metrics ." +ok 168 - When I run "analizo metrics ." # -ok 171 - Then analizo must report that the project has total_modules = 2 +ok 169 - Then analizo must report that the project has total_modules = 2 # -ok 172 - And analizo must report that module Main has nom = 1 +ok 170 - And analizo must report that module Main has nom = 1 # -ok 173 - And analizo must report that module HelloWorld has npm = 3 +ok 171 - And analizo must report that module HelloWorld has npm = 3 # -ok 174 - And analizo must report that module HelloWorld has nom = 4 +ok 172 - And analizo must report that module HelloWorld has nom = 4 # -ok 175 - And analizo must report that module HelloWorld has npa = 1 +ok 173 - And analizo must report that module HelloWorld has npa = 1 # # Scenario some metrics -ok 176 - Given I am in t/samples/hello_world/csharp +ok 174 - Given I am in t/samples/hello_world/csharp # -ok 177 - When I run "analizo metrics ." +ok 175 - When I run "analizo metrics ." # -ok 178 - Then analizo must report that the project has total_modules = 2 +ok 176 - Then analizo must report that the project has total_modules = 2 # -ok 179 - And analizo must report that module main has nom = 1 +ok 177 - And analizo must report that module main has nom = 1 # -ok 180 - And analizo must report that module HelloWorld has npm = 3 +ok 178 - And analizo must report that module HelloWorld has npm = 3 # -ok 181 - And analizo must report that module HelloWorld has nom = 4 +ok 179 - And analizo must report that module HelloWorld has nom = 4 # -ok 182 - And analizo must report that module HelloWorld has npa = 1 +ok 180 - And analizo must report that module HelloWorld has npa = 1 # # Scenario inheritance data -ok 183 - Given I am in t/samples/animals/cpp +ok 181 - Given I am in t/samples/animals/cpp # -ok 184 - When I run "analizo graph --modules ." +ok 182 - When I run "analizo graph --modules ." # -ok 185 - Then analizo must report that "Cat" depends on "Mammal" +ok 183 - Then analizo must report that "Cat" depends on "Mammal" # -ok 186 - And analizo must report that "Dog" depends on "Mammal" +ok 184 - And analizo must report that "Dog" depends on "Mammal" # -ok 187 - And analizo must report that "Mammal" depends on "Animal" +ok 185 - And analizo must report that "Mammal" depends on "Animal" # -ok 188 - When I run "analizo metrics ." +ok 186 - When I run "analizo metrics ." # -ok 189 - Then analizo must report that module Cat has dit = 2 +ok 187 - Then analizo must report that module Cat has dit = 2 # -ok 190 - And analizo must report that module Dog has dit = 2 +ok 188 - And analizo must report that module Dog has dit = 2 # -ok 191 - And analizo must report that module Mammal has dit = 1 +ok 189 - And analizo must report that module Mammal has dit = 1 # -ok 192 - And analizo must report that module Animal has dit = 0 +ok 190 - And analizo must report that module Animal has dit = 0 # # Scenario inheritance data -ok 193 - Given I am in t/samples/animals/java +ok 191 - Given I am in t/samples/animals/java # -ok 194 - When I run "analizo graph --modules ." +ok 192 - When I run "analizo graph --modules ." # -ok 195 - Then analizo must report that "Cat" depends on "Mammal" +ok 193 - Then analizo must report that "Cat" depends on "Mammal" # -ok 196 - And analizo must report that "Dog" depends on "Mammal" +ok 194 - And analizo must report that "Dog" depends on "Mammal" # -ok 197 - And analizo must report that "Mammal" depends on "Animal" +ok 195 - And analizo must report that "Mammal" depends on "Animal" # -ok 198 - When I run "analizo metrics ." +ok 196 - When I run "analizo metrics ." # -ok 199 - Then analizo must report that module Cat has dit = 2 +ok 197 - Then analizo must report that module Cat has dit = 2 # -ok 200 - And analizo must report that module Dog has dit = 2 +ok 198 - And analizo must report that module Dog has dit = 2 # -ok 201 - And analizo must report that module Mammal has dit = 1 +ok 199 - And analizo must report that module Mammal has dit = 1 # -ok 202 - And analizo must report that module Animal has dit = 0 +ok 200 - And analizo must report that module Animal has dit = 0 # # Scenario mixed Java and C -ok 203 - Given I am in t/samples/mixed +ok 201 - Given I am in t/samples/mixed # -ok 204 - When I run "analizo metrics ." +ok 202 - When I run "analizo metrics ." # -ok 205 - Then the output must match "_module: native_backend" +ok 203 - Then the output must match "_module: native_backend" # -ok 206 - And the output must match "_module: UI" +ok 204 - And the output must match "_module: UI" # -ok 207 - And the output must match "_module: Backend" +ok 205 - And the output must match "_module: Backend" # -# 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 208 - Given I am in t/samples/multidir/cpp +# 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 206 - When I explode t/samples/evolution.tar.gz # -ok 209 - When I run "analizo metrics --exclude test ." +ok 207 - And I run "analizo metrics-history --list ." # -ok 210 - Then the output must match "module: HelloWorld" +ok 208 - Then the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed" # -ok 211 - And the output must not match "module: hello_test" +ok 209 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e" # -# Scenario excluding test directory -ok 212 - Given I am in t/samples/multidir/csharp +ok 210 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce" # -ok 213 - When I run "analizo metrics --exclude test ." +ok 211 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53" # -ok 214 - Then the output must match "module: HelloWorld" +ok 212 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00" # -ok 215 - And the output must not match "module: hello_test" +ok 213 - And the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad" # -# Scenario excluding a list of directories -ok 216 - Given I am in t/samples/multidir/cpp +# Scenario non-code commits should not be analyzed +ok 214 - When I explode t/samples/evolution.tar.gz # -ok 217 - When I run "analizo metrics --exclude test:src ." +ok 215 - And I run "analizo metrics-history --list ." # -ok 218 - Then the output must not match "module: HelloWorld" +ok 216 - Then the output must not match "ba62278e976944c0334103aa0044535169e1a51e" # -ok 219 - And the output must not match "module: hello_test" +# Scenario merge commits without code change should not be analyzed +ok 217 - When I explode t/samples/evolution.tar.gz # -# Scenario excluding a list of directories -ok 220 - Given I am in t/samples/multidir/csharp +ok 218 - And I run "analizo metrics-history --list ." # -ok 221 - When I run "analizo metrics --exclude test:src ." +ok 219 - Then the output must not match "0fdaaa7dcc8073332a957024fafc8c98f165e725" # -ok 222 - Then the output must not match "module: HelloWorld" +# Scenario actually processing merge commits +ok 220 - When I explode t/samples/evolution.tar.gz # -ok 223 - And the output must not match "module: hello_test" +ok 221 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv" # -# Scenario excluding src directory -ok 224 - Given I am in t/samples/multidir/cpp +ok 222 - Then the output must match "^id,previous_commit_id,author_date,author_name,author_email,.*,sc_mean" # -ok 225 - When I run "analizo metrics --exclude src ." +ok 223 - And the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed,eb67c27055293e835049b58d7d73ce3664d3f90e" # -ok 226 - Then the output must match "module: hello_test" +ok 224 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e,," # -ok 227 - And the output must not match "module: HelloWorld" +ok 225 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00" # -# Scenario excluding src directory -ok 228 - Given I am in t/samples/multidir/csharp +ok 226 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00" # -ok 229 - When I run "analizo metrics --exclude src ." +ok 227 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00,0d3c023120ad4e9f519a03fff275d048c52671ad" # -ok 230 - Then the output must match "module: hello_test" +# Scenario actually processing initial commit and first commit after a non-relevant merge +ok 228 - When I explode t/samples/evolution.tar.gz # -ok 231 - And the output must not match "module: HelloWorld" +ok 229 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv" # -# 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 232 - When I explode t/samples/evolution.tar.gz +ok 230 - Then the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad,," # -ok 233 - And I run "analizo metrics-history --list ." +ok 231 - And the output must match "8183eafad3a0f3eff6e8869f1bdbfd255e86825a,0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed" # -ok 234 - Then the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed" +# Scenario support for parallel processing +ok 232 - Given I copy t/samples/evolution.tar.gz into a temporary directory # -ok 235 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e" +ok 233 - When I run "tar xzf evolution.tar.gz" # -ok 236 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce" +ok 234 - And I run "cd evolution && analizo metrics-history -o ../sequential.csv" # -ok 237 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53" +ok 235 - And I run "cd evolution && analizo metrics-history -p 2 -o ../parallel.csv" # -ok 238 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00" +ok 236 - Then the exit status must be 0 # -ok 239 - And the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad" +ok 237 - When I run "sort sequential.csv > sequential-sorted.csv" # -# Scenario non-code commits should not be analyzed -ok 240 - When I explode t/samples/evolution.tar.gz +ok 238 - And I run "sort parallel.csv > parallel-sorted.csv" # -ok 241 - And I run "analizo metrics-history --list ." +ok 239 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv" # -ok 242 - Then the output must not match "ba62278e976944c0334103aa0044535169e1a51e" +ok 240 - Then the output must not match "---" # -# Scenario merge commits without code change should not be analyzed -ok 243 - When I explode t/samples/evolution.tar.gz +ok 241 - And the exit status must be 0 # -ok 244 - And I run "analizo metrics-history --list ." +# Scenario parsing git log format containing renamed files among status of changed files +ok 242 - Given I copy t/samples/evolution.tar.gz into a temporary directory # -ok 245 - Then the output must not match "0fdaaa7dcc8073332a957024fafc8c98f165e725" +ok 243 - When I run "tar xzf evolution.tar.gz" # -# Scenario actually processing merge commits -ok 246 - When I explode t/samples/evolution.tar.gz +ok 244 - And I run "cd evolution && git checkout doc && analizo metrics-history ." # -ok 247 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv" +ok 245 - Then the exit status must be 0 # -ok 248 - Then the output must match "^id,previous_commit_id,author_date,author_name,author_email,.*,sc_mean" +# Scenario language filters +ok 246 - Given I copy t/samples/mixed into a temporary directory +# +ok 247 - When I run "(cd mixed && git init && git add * && git commit -m 'initial commit')" # -ok 249 - And the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed,eb67c27055293e835049b58d7d73ce3664d3f90e" +ok 248 - And I run "analizo metrics-history --language java mixed" # -ok 250 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e,," +ok 249 - Then the output must not match "native_backend.c" # -ok 251 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00" +# Feature analizo wrapper script +# Scenario invoking a tool +ok 250 - When I run "analizo metrics lib t" # -ok 252 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00" +ok 251 - Then analizo must emit a warning matching "Usage:" # -ok 253 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00,0d3c023120ad4e9f519a03fff275d048c52671ad" +ok 252 - And analizo must emit a warning matching "analizo.metrics" # -# Scenario actually processing initial commit and first commit after a non-relevant merge -ok 254 - When I explode t/samples/evolution.tar.gz +ok 253 - And the exit status must not be 0 # -ok 255 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv" +# Scenario must not pass --version ahead +ok 254 - When I run "analizo metrics --version" # -ok 256 - Then the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad,," +ok 255 - Then analizo must emit a warning matching "Invalid option: --version" # -ok 257 - And the output must match "8183eafad3a0f3eff6e8869f1bdbfd255e86825a,0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed" +ok 256 - And the exit status must not be 0 # -# Scenario support for parallel processing -ok 258 - Given I copy t/samples/evolution.tar.gz into a temporary directory +# Scenario display help +ok 257 - When I run "analizo --help" # -ok 259 - When I run "tar xzf evolution.tar.gz" +ok 258 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo\s" # -ok 260 - And I run "cd evolution && analizo metrics-history -o ../sequential.csv" +ok 259 - And the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo\s" # -ok 261 - And I run "cd evolution && analizo metrics-history -p 2 -o ../parallel.csv" +ok 260 - And the exit status must be 0 # -ok 262 - Then the exit status must be 0 +# Scenario display version +ok 261 - When I run "analizo --version" # -ok 263 - When I run "sort sequential.csv > sequential-sorted.csv" +ok 262 - Then the output must match "^analizo version [0-9]+.[0-9]+.[0-9]+" # -ok 264 - And I run "sort parallel.csv > parallel-sorted.csv" +ok 263 - And the exit status must be 0 # -ok 265 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv" +# Scenario invalid option +ok 264 - When I run "analizo --invalid-option" # -ok 266 - Then the output must not match "---" +ok 265 - Then the output must match "Unrecognized command" # -ok 267 - And the exit status must be 0 +ok 266 - And the exit status must not be 0 # -# Scenario parsing git log format containing renamed files among status of changed files -ok 268 - Given I copy t/samples/evolution.tar.gz into a temporary directory +# 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 267 - When I explode t/samples/evolution.tar.gz # -ok 269 - When I run "tar xzf evolution.tar.gz" +ok 268 - And I run "analizo metrics-history -f db -o data.db" # -ok 270 - And I run "cd evolution && git checkout doc && analizo metrics-history ." +ok 269 - Then the exit status must be 0 # -ok 271 - Then the exit status must be 0 +ok 270 - When I run "select * from modules" on database "data.db" # -# Scenario language filters -ok 272 - Given I copy t/samples/mixed into a temporary directory +ok 271 - Then the output must match "Input" # -ok 273 - When I run "(cd mixed && git init && git add * && git commit -m 'initial commit')" +ok 272 - And the output must match "Output" # -ok 274 - And I run "analizo metrics-history --language java mixed" +ok 273 - And the output must match "prog" # -ok 275 - Then the output must not match "native_backend.c" +# 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 274 - When I explode t/samples/tree-evolution.tar.gz +# +ok 275 - And I run "analizo tree-evolution" +# +ok 276 - Then the output lines must match "\# 073290fbad0254793bd3ecfb97654c04368d0039\\nsrc\\n\#" +# +ok 277 - Then the output lines must match "\# 85f7db08f7b7b0b62e3c0023b2743d529b0d5b4b\\nsrc\\nsrc/input\\n\#" +# +ok 278 - Then the output lines must match "\# f41cf7d0351e812285efd60c6d957c330b1f61a1\\nsrc\\nsrc/input\\nsrc/output" # # 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 276 - When I run "analizo graph --help" +ok 279 - When I run "analizo graph --help" # -ok 277 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-graph" +ok 280 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-graph" # -ok 278 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo graph \[OPTIONS\]" +ok 281 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo graph \[OPTIONS\]" # # Scenario display manpage for `analizo metrics` -ok 279 - When I run "analizo metrics --help" +ok 282 - When I run "analizo metrics --help" # -ok 280 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics" +ok 283 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics" # -ok 281 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics \[OPTIONS\]" +ok 284 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics \[OPTIONS\]" # # Scenario display manpage for `analizo metrics-batch` -ok 282 - When I run "analizo metrics-batch --help" +ok 285 - When I run "analizo metrics-batch --help" # -ok 283 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-batch" +ok 286 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-batch" # -ok 284 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-batch \[OPTIONS\]" +ok 287 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-batch \[OPTIONS\]" # # Scenario display manpage for `analizo metrics-history` -ok 285 - When I run "analizo metrics-history --help" +ok 288 - When I run "analizo metrics-history --help" # -ok 286 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-history" +ok 289 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-history" # -ok 287 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-history \[OPTIONS\]" +ok 290 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-history \[OPTIONS\]" # # Scenario display manpage for `analizo tree-evolution` -ok 288 - When I run "analizo tree-evolution --help" +ok 291 - When I run "analizo tree-evolution --help" # -ok 289 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-tree-evolution" +ok 292 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-tree-evolution" # -ok 290 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo tree-evolution \[OPTIONS\]" +ok 293 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo tree-evolution \[OPTIONS\]" # # Scenario display manpage for `analizo files-graph` -ok 291 - When I run "analizo files-graph --help" -# -ok 292 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-files-graph" -# -ok 293 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo files-graph \[OPTIONS\]" -# -# Feature analizo wrapper script -# Scenario invoking a tool -ok 294 - When I run "analizo metrics lib t" +ok 294 - When I run "analizo files-graph --help" # -ok 295 - Then analizo must emit a warning matching "Usage:" +ok 295 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-files-graph" # -ok 296 - And analizo must emit a warning matching "analizo.metrics" +ok 296 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo files-graph \[OPTIONS\]" # -ok 297 - And the exit status must not be 0 -# -# Scenario must not pass --version ahead -ok 298 - When I run "analizo metrics --version" -# -ok 299 - Then analizo must emit a warning matching "Invalid option: --version" -# -ok 300 - And the exit status must not be 0 -# -# Scenario display help -ok 301 - When I run "analizo --help" -# -ok 302 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo\s" -# -ok 303 - And the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo\s" -# -ok 304 - And the exit status must be 0 -# -# Scenario display version -ok 305 - When I run "analizo --version" +# 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 297 - When I run "analizo metrics t/samples/animals/cpp" # -ok 306 - Then the output must match "^analizo version [0-9]+.[0-9]+.[0-9]+" +ok 298 - Then analizo must report that file animal.h declares module Animal # -ok 307 - And the exit status must be 0 +ok 299 - And analizo must report that file cat.cc declares module Cat # -# Scenario invalid option -ok 308 - When I run "analizo --invalid-option" +ok 300 - And analizo must report that file cat.h declares module Cat # -ok 309 - Then the output must match "Unrecognized command" +ok 301 - And analizo must report that file cat.cc not declares module Dog # -ok 310 - And the exit status must not be 0 +ok 302 - And analizo must report that file cat.h not declares module Dog # -# 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 311 - Given I am in t/samples/android-framework/android-5.1.1_r38 +# Scenario C++, running against current directory +ok 303 - Given I am in t/samples/animals/cpp # -ok 312 - When I run "analizo metrics ." +ok 304 - When I run "analizo metrics ." # -ok 313 - Then the exit status must be 0 +ok 305 - Then analizo must report that file animal.h declares module Animal # -# Scenario don't duplicate YAML keys parsing AudioTrackShared.cpp from android 5.1.1 -ok 314 - Given I am in t/samples/android-framework/android-5.1.1_r38 +ok 306 - And analizo must report that file cat.cc declares module Cat # -ok 315 - When I run "analizo metrics ." +ok 307 - And analizo must report that file cat.h declares module Cat # -ok 316 - Then analizo must not emit a warning matching "YAML_LOAD_WARN_DUPLICATE_KEY" +# Scenario Java +ok 308 - When I run "analizo metrics t/samples/animals/java" # -# Scenario don't abort parsing mlpack 3.0.0 -ok 317 - Given I am in t/samples/mlpack-3.0.0 +ok 309 - Then analizo must report that file Animal.java declares module Animal # -ok 318 - When I run "analizo metrics ." +# Scenario C +ok 310 - Given I am in t/samples/hello_world/c # -ok 319 - Then analizo must not emit a warning matching "Aborted" +ok 311 - When I run "analizo metrics ." # -ok 320 - And the exit status must be 0 +ok 312 - Then analizo must report that module hello_world has _filename = [hello_world.c,hello_world.h] # -# Scenario don't die parsing kdelibs warning about unknown escape character -ok 321 - Given I am in t/samples/kdelibs +ok 313 - And analizo must report that file hello_world.c declares module hello_world # -ok 322 - When I run "analizo metrics ." +ok 314 - And analizo must report that file hello_world.h declares module hello_world # -ok 323 - Then analizo must not emit a warning matching "Error" +# Scenario CSharp hello_world +ok 315 - Given I am in t/samples/hello_world/csharp # -ok 324 - And the exit status must be 0 +ok 316 - When I run "analizo metrics ." # -# Scenario don't die parsing mod_suexec.h from http 2.4.38 -ok 325 - Given I am in t/samples/httpd-2.4.38 +ok 317 - Then analizo must report that module HelloWorld has _filename = [HelloWorld.cs] # -ok 326 - When I run "analizo metrics ." +# Scenario CSharp polygons +ok 318 - Given I am in t/samples/polygons/csharp # -ok 327 - Then analizo must not emit a warning matching "Not a HASH reference" +ok 319 - When I run "analizo metrics ." # -ok 328 - And the exit status must be 0 +ok 320 - Then analizo must report that file Polygon.cs declares module Polygon # -# Scenario allow dot on module filename -ok 329 - Given I am in t/samples/sample_basic/c +ok 321 - And analizo must report that file Rect.cs declares module Rect # -ok 330 - When I run "analizo metrics ." +ok 322 - And analizo must report that file Triangle.cs declares module Triangle # -ok 331 - Then analizo must report that file module1.c declares module module1 +# Scenario Java Generics WildCard sample +ok 323 - Given I am in t/samples/wildcard # -# 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 332 - Given I am in t/samples/hello_world/ +ok 324 - When I run "analizo metrics ." # -ok 333 - When I run "analizo metrics-batch" +ok 325 - Then analizo must report that file WildcardClass.java declares module WildcardClass # -ok 334 - Then the output must match "I: Processed c." +ok 326 - And analizo must report that file GenericClass.java declares module GenericClass # -ok 335 - And the output must match "I: Processed cpp." +# Scenario Java Enumeration sample +ok 327 - Given I am in t/samples/enumeration # -ok 336 - And the output must match "I: Processed java." +ok 328 - When I run "analizo metrics ." # -# Scenario summarizing -ok 337 - Given I am in t/samples/hello_world/ +ok 329 - Then analizo must report that file Main.java declares module Main::MyEnumeration # -ok 338 - When I run "analizo metrics-batch --quiet -o data.csv && cat data.csv && rm -f *.csv" +ok 330 - And analizo must report that file Enumeration.java declares module Enumeration # -ok 339 - Then the output must match "^id," +# 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 331 - Given I copy t/samples/mixed into a temporary directory # -ok 340 - And the output must not match ",---," +ok 332 - And I create a file called .analizo with the following content +# """metrics: --language java""" +ok 333 - When I run "analizo metrics ." # -ok 341 - And the output must match "c," +ok 334 - Then the output must not match "native_backend.c" # -ok 342 - And the output must match "cpp," +ok 335 - And the output must match "UI.java" # -ok 343 - And the output must match "java," +ok 336 - And the exit status must be 0 # -ok 344 - And the output must not match "I: Processed" +# Scenario all others +ok 337 - Given I change to an empty temporary directory # -# Scenario support for parallel processing -ok 345 - Given I copy t/samples/hello_world/* into a temporary directory +ok 338 - And I create a file called .analizo with the following content +# """: --help""" +ok 339 - When I run "analizo graph" # -ok 346 - When I run "analizo metrics-batch -q -o sequential.csv" +ok 340 - Then the output must match "analizo graph is part of the analizo suite." # -ok 347 - And I run "analizo metrics-batch -q -o parallel.csv -p 2" +# Scenario all others +ok 341 - Given I change to an empty temporary directory # -ok 348 - And I run "sort sequential.csv > sequential-sorted.csv" +ok 342 - And I create a file called .analizo with the following content +# """: --help""" +ok 343 - When I run "analizo metrics" # -ok 349 - And I run "sort parallel.csv > parallel-sorted.csv" +ok 344 - Then the output must match "analizo metrics is part of the analizo suite." # -ok 350 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv" +# Scenario all others +ok 345 - Given I change to an empty temporary directory # -ok 351 - Then the output must not match "---" +ok 346 - And I create a file called .analizo with the following content +# """: --help""" +ok 347 - When I run "analizo metrics-batch" # -ok 352 - Then the exit status must be 0 +ok 348 - Then the output must match "analizo metrics-batch is part of the analizo suite." # -# Scenario passing two input directories as argument -ok 353 - Given I copy t/samples/hello_world/* into a temporary directory +# Scenario all others +ok 349 - Given I change to an empty temporary directory # -ok 354 - When I run "analizo metrics-batch --quiet -o data.csv cpp java" +ok 350 - And I create a file called .analizo with the following content +# """: --help""" +ok 351 - When I run "analizo metrics-history" # -ok 355 - Then the exit status must be 0 +ok 352 - Then the output must match "analizo metrics-history is part of the analizo suite." # -ok 356 - And the file "c-details.csv" should not exist +# Scenario all others +ok 353 - Given I change to an empty temporary directory # -ok 357 - And the file "cpp-details.csv" should exist +ok 354 - And I create a file called .analizo with the following content +# """: --help""" +ok 355 - When I run "analizo tree-evolution" # -ok 358 - And the file "java-details.csv" should exist +ok 356 - Then the output must match "analizo tree-evolution is part of the analizo suite." # -# Scenario passing one input directory as argument -ok 359 - Given I copy t/samples/hello_world/* into a temporary directory +# Scenario all others +ok 357 - Given I change to an empty temporary directory # -ok 360 - When I run "analizo metrics-batch --quiet -o data.csv cpp" +ok 358 - And I create a file called .analizo with the following content +# """: --help""" +ok 359 - When I run "analizo files-graph" # -ok 361 - Then the exit status must be 0 +ok 360 - Then the output must match "analizo files-graph is part of the analizo suite." # -ok 362 - And the file "c-details.csv" should not exist +# Scenario all others +ok 361 - Given I change to an empty temporary directory # -ok 363 - And the file "cpp-details.csv" should exist +ok 362 - And I create a file called .analizo with the following content +# """: --help""" +ok 363 - When I run "analizo help" # -ok 364 - And the file "java-details.csv" should not exist +ok 364 - Then the output must match "analizo help is part of the analizo suite." # -# 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 +# Feature functions calls +# Scenario detect function calls among classes +ok 365 - Given I am in t/samples/animals/cpp # -ok 366 - When I run "analizo metrics ." +ok 366 - When I run "analizo graph ." # -ok 367 - Then analizo must report that module CPolygon has nom = 3 +ok 367 - Then analizo must report that "Cat::Cat(char *)" depends on "Cat::_name" # -# Scenario number of methods of the polygon java sample -ok 368 - Given I am in t/samples/polygons/cpp +ok 368 - And analizo must not report that "Cat::Cat(char *)" depends on "Cat::name()" # -ok 369 - When I run "analizo metrics ." +ok 369 - And the exit status must be 0 # -ok 370 - Then analizo must report that module CTetragon has nom = 2 +# Feature displaying version +# Scenario running without any arguments +ok 370 - When I run "analizo graph" # -# Scenario number of methods of the polygon java sample -ok 371 - Given I am in t/samples/polygons/java +ok 371 - Then analizo must emit a warning matching "Usage:" # -ok 372 - When I run "analizo metrics ." +ok 372 - And the exit status must not be 0 # -ok 373 - Then analizo must report that module Polygon has nom = 3 +# Feature group by modules +# Scenario sample project +ok 373 - Given I am in t/samples/sample_basic/c/ # -# Scenario number of methods of the polygon java sample -ok 374 - Given I am in t/samples/polygons/csharp +ok 374 - When I run "analizo graph --modules ." # -ok 375 - When I run "analizo metrics ." +ok 375 - Then analizo must report that "module1" depends on "module2" # -ok 376 - Then analizo must report that module Polygon has nom = 2 +ok 376 - Then analizo must report that "module1" depends on "module3" # -# Scenario number of methods of the polygon java sample -ok 377 - Given I am in t/samples/polygons/csharp +# Feature clustering subroutines in the same module together +# Scenario clustering dependencies +ok 377 - Given I am in t/samples/sample_basic/c/ # -ok 378 - When I run "analizo metrics ." +ok 378 - When I run "analizo graph --cluster ." # -ok 379 - Then analizo must report that module Tetragon has nom = 2 +ok 379 - Then analizo must report that "module1::main()" is part of "module1" # -# Scenario number of methods of the polygon java sample -ok 380 - Given I am in t/samples/animals/cpp +ok 380 - Then analizo must report that "module2::say_hello()" is part of "module2" # -ok 381 - When I run "analizo metrics ." +ok 381 - Then analizo must report that "module2::say_bye()" is part of "module2" # -ok 382 - Then analizo must report that module Animal has nom = 1 +ok 382 - Then analizo must report that "module3::variable" is part of "module3" # -# Scenario number of methods of the polygon java sample -ok 383 - Given I am in t/samples/animals/cpp +ok 383 - Then analizo must report that "module3::callback()" is part of "module3" # -ok 384 - When I run "analizo metrics ." +# Feature plain analizo graph run +# Scenario simply running analizo +ok 384 - Given I am in t/samples/sample_basic/c/ # -ok 385 - Then analizo must report that module Cat has nom = 2 +ok 385 - When I run "analizo graph ." # -# Scenario number of methods of the polygon java sample -ok 386 - Given I am in t/samples/animals/cpp +ok 386 - Then analizo must report that "module1::main()" depends on "module3::variable" # -ok 387 - When I run "analizo metrics ." +ok 387 - Then analizo must report that "module1::main()" depends on "module3::callback()" # -ok 388 - Then analizo must report that module Dog has nom = 2 +ok 388 - Then analizo must report that "module1::main()" depends on "module2::say_bye()" # -# Scenario number of methods of the polygon java sample -ok 389 - Given I am in t/samples/animals/java +ok 389 - Then analizo must report that "module1::main()" depends on "module2::say_hello()" # -ok 390 - When I run "analizo metrics ." +ok 390 - And the exit status must be 0 # -ok 391 - Then analizo must report that module Animal has nom = 1 +# Feature input files for graph tool +# Scenario passing specific files in the command line +ok 391 - Given I am in 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 392 - When I run "analizo graph module1.c module2.c" # -ok 393 - When I run "analizo metrics ." +ok 393 - Then the output must match "module1" # -ok 394 - Then analizo must report that module Cat has nom = 2 +ok 394 - And the output must match "module2" # -# Scenario number of methods of the polygon java sample -ok 395 - Given I am in t/samples/animals/java +ok 395 - And the output must not match "module3" # -ok 396 - When I run "analizo metrics ." +# Scenario passing unexisting file +ok 396 - Given I am in t/samples/sample_basic/c # -ok 397 - Then analizo must report that module Dog has nom = 2 +ok 397 - When I run "analizo graph unexisting-file.c" # -# Scenario number of methods of the polygon java sample -ok 398 - Given I am in t/samples/animals/csharp +ok 398 - Then analizo must emit a warning matching "is not readable" # -ok 399 - When I run "analizo metrics ." +# Feature output file for graph tool +# Scenario passing output file in the command line +ok 399 - Given I am in . # -ok 400 - Then analizo must report that module Animal has nom = 1 +ok 400 - When I run "analizo graph --output output.dot.tmp t/samples/sample_basic/c/" # -# Scenario number of methods of the polygon java sample -ok 401 - Given I am in t/samples/animals/csharp +ok 401 - Then the contents of "output.dot.tmp" must match "module1" # -ok 402 - When I run "analizo metrics ." +ok 402 - And the exit status must be 0 # -ok 403 - Then analizo must report that module Cat has nom = 2 +# Scenario passing output file in an unexisting directory +ok 403 - Given I am in . # -# Scenario number of methods of the polygon java sample -ok 404 - Given I am in t/samples/animals/csharp +ok 404 - When I run "analizo graph --output /this/directory/must/not/exists/output.dot t/samples/sample_basic/c/" # -ok 405 - When I run "analizo metrics ." +ok 405 - Then analizo must emit a warning matching "No such file or directory" # -ok 406 - Then analizo must report that module Dog has nom = 2 +ok 406 - And the exit status must not be 0 # -# Scenario not computes macro on C code as method definition -ok 407 - Given I am in t/samples/macro +# Scenario passing output file without permission to write +ok 407 - Given I am in . # -ok 408 - When I run "analizo metrics ." +ok 408 - When I run "touch output.tmp" # -ok 409 - Then analizo must report that module using_macro has nom = 1 +ok 409 - And I run "chmod 000 output.tmp" # -# 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 410 - Given I am in t/samples/hello_world/ +ok 410 - And I run "analizo graph --output output.tmp t/samples/sample_basic/c/" # -ok 411 - When I run "analizo metrics ." +ok 411 - Then the exit status must not be 0 # -ok 412 - Then the output must match "acc_mean:" +ok 412 - And analizo must emit a warning matching "Permission denied" # -ok 413 - Then the output must match "acc_mode:" +# Feature omitting certain modules +# Scenario omitting say_bye +ok 413 - Given I am in t/samples/sample_basic/ # -ok 414 - Then the output must match "acc_standard_deviation:" +ok 414 - When I run "analizo graph --omit 'module2::say_bye()' ." # -ok 415 - Then the output must match "acc_sum:" +ok 415 - Then the output must not match "module2::say_bye()" # -ok 416 - Then the output must match "acc_variance:" +# Scenario omitting two functions +ok 416 - Given I am in t/samples/sample_basic/ # -ok 417 - Then the output must match "acc_quantile_min:" +ok 417 - When I run "analizo graph --omit 'module2::say_bye()','module2::say_hello()' ." # -ok 418 - Then the output must match "acc_quantile_lower:" +ok 418 - Then the output must not match "module2::say_bye()" # -ok 419 - Then the output must match "acc_quantile_median:" +ok 419 - Then the output must not match "module2::say_hello()" # -ok 420 - Then the output must match "acc_quantile_upper:" +# Scenario omitting depending functions +ok 420 - Given I am in t/samples/sample_basic/ # -ok 421 - Then the output must match "acc_quantile_max:" +ok 421 - When I run "analizo graph --omit 'module1::main()' ." # -ok 422 - Then the output must match "acc_kurtosis:" +ok 422 - Then the output must not match "module1::main()" # -ok 423 - Then the output must match "acc_skewness:" +# 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 423 - When I run "analizo metrics --list" # -# Scenario "Hello, world" project -ok 424 - Given I am in t/samples/hello_world/ +ok 424 - Then analizo must present a list of metrics # -ok 425 - When I run "analizo metrics ." +# Scenario listing metrics +ok 425 - When I run "analizo metrics -l" # -ok 426 - Then the output must match "accm_mean:" +ok 426 - Then analizo must present a list of metrics # -ok 427 - Then the output must match "accm_mode:" +# 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 427 - Given I am in t/samples/animals/cpp # -ok 428 - Then the output must match "accm_standard_deviation:" +ok 428 - When I run "analizo metrics ." # -ok 429 - Then the output must match "accm_sum:" +ok 429 - Then analizo must report that module Dog has noa = 1 # -ok 430 - Then the output must match "accm_variance:" +ok 430 - And analizo must report that module Cat has noa = 1 # -ok 431 - Then the output must match "accm_quantile_min:" +ok 431 - And analizo must report that module main has noa = 0 # -ok 432 - Then the output must match "accm_quantile_lower:" +# Scenario number of attributes in the "Animals" project +ok 432 - Given I am in t/samples/animals/java # -ok 433 - Then the output must match "accm_quantile_median:" +ok 433 - When I run "analizo metrics ." # -ok 434 - Then the output must match "accm_quantile_upper:" +ok 434 - Then analizo must report that module Dog has noa = 1 # -ok 435 - Then the output must match "accm_quantile_max:" +ok 435 - And analizo must report that module Cat has noa = 1 # -ok 436 - Then the output must match "accm_kurtosis:" +ok 436 - And analizo must report that module Main has noa = 0 # -ok 437 - Then the output must match "accm_skewness:" +# Scenario number of attributes in the "Animals" project +ok 437 - Given I am in t/samples/animals/csharp # -# Scenario "Hello, world" project -ok 438 - Given I am in t/samples/hello_world/ +ok 438 - When I run "analizo metrics ." # -ok 439 - When I run "analizo metrics ." +ok 439 - Then analizo must report that module Dog has noa = 1 # -ok 440 - Then the output must match "amloc_mean:" +ok 440 - And analizo must report that module Cat has noa = 1 # -ok 441 - Then the output must match "amloc_mode:" +ok 441 - And analizo must report that module main has noa = 0 # -ok 442 - Then the output must match "amloc_standard_deviation:" +# 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 442 - Given I am in t/samples/mixed # -ok 443 - Then the output must match "amloc_sum:" +ok 443 - When I run "analizo metrics --language c ." # -ok 444 - Then the output must match "amloc_variance:" +ok 444 - Then the output must match "native_backend" # -ok 445 - Then the output must match "amloc_quantile_min:" +ok 445 - And the output must not match "UI" # -ok 446 - Then the output must match "amloc_quantile_lower:" +ok 446 - And the output must not match "Backend" # -ok 447 - Then the output must match "amloc_quantile_median:" +ok 447 - And the output must not match "CSharp_Backend" # -ok 448 - Then the output must match "amloc_quantile_upper:" +# Scenario filtering for Java code +ok 448 - Given I am in t/samples/mixed # -ok 449 - Then the output must match "amloc_quantile_max:" +ok 449 - When I run "analizo metrics --language java ." # -ok 450 - Then the output must match "amloc_kurtosis:" +ok 450 - Then the output must match "UI" # -ok 451 - Then the output must match "amloc_skewness:" +ok 451 - And the output must match "Backend" # -# Scenario "Hello, world" project -ok 452 - Given I am in t/samples/hello_world/ +ok 452 - And the output must not match "native_backend" # -ok 453 - When I run "analizo metrics ." +ok 453 - And the output must not match "CSharp_Backend" # -ok 454 - Then the output must match "anpm_mean:" +# Scenario filtering for CSharp code +ok 454 - Given I am in t/samples/mixed # -ok 455 - Then the output must match "anpm_mode:" +ok 455 - When I run "analizo metrics --language csharp ." # -ok 456 - Then the output must match "anpm_standard_deviation:" +ok 456 - Then the output must match "CSharp_Backend" # -ok 457 - Then the output must match "anpm_sum:" +ok 457 - And the output must not match "UI" # -ok 458 - Then the output must match "anpm_variance:" +ok 458 - And the output must not match "native_backend" # -ok 459 - Then the output must match "anpm_quantile_min:" +# Scenario listing languages +ok 459 - When I run "analizo metrics --language list" # -ok 460 - Then the output must match "anpm_quantile_lower:" +ok 460 - Then analizo must present a list of languages # -ok 461 - Then the output must match "anpm_quantile_median:" +# 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 461 - Given I am in t/samples/polygons/cpp # -ok 462 - Then the output must match "anpm_quantile_upper:" +ok 462 - When I run "analizo metrics ." # -ok 463 - Then the output must match "anpm_quantile_max:" +ok 463 - Then analizo must report that module CPolygon has nom = 3 # -ok 464 - Then the output must match "anpm_kurtosis:" +# Scenario number of methods of the polygon java sample +ok 464 - Given I am in t/samples/polygons/cpp # -ok 465 - Then the output must match "anpm_skewness:" +ok 465 - When I run "analizo metrics ." # -# Scenario "Hello, world" project -ok 466 - Given I am in t/samples/hello_world/ +ok 466 - Then analizo must report that module CTetragon has nom = 2 # -ok 467 - When I run "analizo metrics ." +# Scenario number of methods of the polygon java sample +ok 467 - Given I am in t/samples/polygons/java # -ok 468 - Then the output must match "cbo_mean:" +ok 468 - When I run "analizo metrics ." # -ok 469 - Then the output must match "cbo_mode:" +ok 469 - Then analizo must report that module Polygon has nom = 3 # -ok 470 - Then the output must match "cbo_standard_deviation:" +# Scenario number of methods of the polygon java sample +ok 470 - Given I am in t/samples/polygons/csharp # -ok 471 - Then the output must match "cbo_sum:" +ok 471 - When I run "analizo metrics ." # -ok 472 - Then the output must match "cbo_variance:" +ok 472 - Then analizo must report that module Polygon has nom = 2 # -ok 473 - Then the output must match "cbo_quantile_min:" +# Scenario number of methods of the polygon java sample +ok 473 - Given I am in t/samples/polygons/csharp # -ok 474 - Then the output must match "cbo_quantile_lower:" +ok 474 - When I run "analizo metrics ." # -ok 475 - Then the output must match "cbo_quantile_median:" +ok 475 - Then analizo must report that module Tetragon has nom = 2 # -ok 476 - Then the output must match "cbo_quantile_upper:" +# Scenario number of methods of the polygon java sample +ok 476 - Given I am in t/samples/animals/cpp # -ok 477 - Then the output must match "cbo_quantile_max:" +ok 477 - When I run "analizo metrics ." # -ok 478 - Then the output must match "cbo_kurtosis:" +ok 478 - Then analizo must report that module Animal has nom = 1 # -ok 479 - Then the output must match "cbo_skewness:" +# Scenario number of methods of the polygon java sample +ok 479 - Given I am in t/samples/animals/cpp # -# Scenario "Hello, world" project -ok 480 - Given I am in t/samples/hello_world/ +ok 480 - When I run "analizo metrics ." # -ok 481 - When I run "analizo metrics ." +ok 481 - Then analizo must report that module Cat has nom = 2 # -ok 482 - Then the output must match "dit_mean:" +# Scenario number of methods of the polygon java sample +ok 482 - Given I am in t/samples/animals/cpp # -ok 483 - Then the output must match "dit_mode:" +ok 483 - When I run "analizo metrics ." # -ok 484 - Then the output must match "dit_standard_deviation:" +ok 484 - Then analizo must report that module Dog has nom = 2 # -ok 485 - Then the output must match "dit_sum:" +# Scenario number of methods of the polygon java sample +ok 485 - Given I am in t/samples/animals/java # -ok 486 - Then the output must match "dit_variance:" +ok 486 - When I run "analizo metrics ." # -ok 487 - Then the output must match "dit_quantile_min:" +ok 487 - Then analizo must report that module Animal has nom = 1 # -ok 488 - Then the output must match "dit_quantile_lower:" +# Scenario number of methods of the polygon java sample +ok 488 - Given I am in t/samples/animals/java # -ok 489 - Then the output must match "dit_quantile_median:" +ok 489 - When I run "analizo metrics ." # -ok 490 - Then the output must match "dit_quantile_upper:" +ok 490 - Then analizo must report that module Cat has nom = 2 # -ok 491 - Then the output must match "dit_quantile_max:" +# Scenario number of methods of the polygon java sample +ok 491 - Given I am in t/samples/animals/java # -ok 492 - Then the output must match "dit_kurtosis:" +ok 492 - When I run "analizo metrics ." # -ok 493 - Then the output must match "dit_skewness:" +ok 493 - Then analizo must report that module Dog has nom = 2 # -# Scenario "Hello, world" project -ok 494 - Given I am in t/samples/hello_world/ +# Scenario number of methods of the polygon java sample +ok 494 - Given I am in t/samples/animals/csharp # ok 495 - When I run "analizo metrics ." # -ok 496 - Then the output must match "lcom4_mean:" +ok 496 - Then analizo must report that module Animal has nom = 1 # -ok 497 - Then the output must match "lcom4_mode:" +# Scenario number of methods of the polygon java sample +ok 497 - Given I am in t/samples/animals/csharp # -ok 498 - Then the output must match "lcom4_standard_deviation:" +ok 498 - When I run "analizo metrics ." # -ok 499 - Then the output must match "lcom4_sum:" +ok 499 - Then analizo must report that module Cat has nom = 2 # -ok 500 - Then the output must match "lcom4_variance:" +# Scenario number of methods of the polygon java sample +ok 500 - Given I am in t/samples/animals/csharp # -ok 501 - Then the output must match "lcom4_quantile_min:" +ok 501 - When I run "analizo metrics ." # -ok 502 - Then the output must match "lcom4_quantile_lower:" +ok 502 - Then analizo must report that module Dog has nom = 2 # -ok 503 - Then the output must match "lcom4_quantile_median:" +# Scenario not computes macro on C code as method definition +ok 503 - Given I am in t/samples/macro # -ok 504 - Then the output must match "lcom4_quantile_upper:" +ok 504 - When I run "analizo metrics ." # -ok 505 - Then the output must match "lcom4_quantile_max:" +ok 505 - Then analizo must report that module using_macro has nom = 1 # -ok 506 - Then the output must match "lcom4_kurtosis:" +# 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 506 - Given I am in t/samples/enumeration # -ok 507 - Then the output must match "lcom4_skewness:" +ok 507 - When I run "analizo metrics ." # -# Scenario "Hello, world" project -ok 508 - Given I am in t/samples/hello_world/ +ok 508 - Then analizo must report that the project has total_modules = 3 # -ok 509 - When I run "analizo metrics ." +# 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 509 - Given I am in t/samples/deep_inheritance/java # -ok 510 - Then the output must match "loc_mean:" +ok 510 - When I run "analizo metrics ." # -ok 511 - Then the output must match "loc_mode:" +ok 511 - Then analizo must report that module Dog has acc = 7 # -ok 512 - Then the output must match "loc_standard_deviation:" +# Scenario afferent connections of the dog family java sample +ok 512 - Given I am in t/samples/deep_inheritance/java # -ok 513 - Then the output must match "loc_sum:" +ok 513 - When I run "analizo metrics ." # -ok 514 - Then the output must match "loc_variance:" +ok 514 - Then analizo must report that module DogFirstGreatGrandson has acc = 1 # -ok 515 - Then the output must match "loc_quantile_min:" +# Scenario afferent connections of the dog family java sample +ok 515 - Given I am in t/samples/deep_inheritance/java # -ok 516 - Then the output must match "loc_quantile_lower:" +ok 516 - When I run "analizo metrics ." # -ok 517 - Then the output must match "loc_quantile_median:" +ok 517 - Then analizo must report that module DogFirstPuppy has acc = 4 # -ok 518 - Then the output must match "loc_quantile_upper:" +# Scenario afferent connections of the dog family java sample +ok 518 - Given I am in t/samples/deep_inheritance/java # -ok 519 - Then the output must match "loc_quantile_max:" +ok 519 - When I run "analizo metrics ." # -ok 520 - Then the output must match "loc_kurtosis:" +ok 520 - Then analizo must report that module DogGrandson has acc = 3 # -ok 521 - Then the output must match "loc_skewness:" +# Scenario afferent connections of the dog family java sample +ok 521 - Given I am in t/samples/deep_inheritance/java # -# Scenario "Hello, world" project -ok 522 - Given I am in t/samples/hello_world/ +ok 522 - When I run "analizo metrics ." # -ok 523 - When I run "analizo metrics ." +ok 523 - Then analizo must report that module DogSecondGreatGrandson has acc = 0 # -ok 524 - Then the output must match "mmloc_mean:" +# Scenario afferent connections of the dog family java sample +ok 524 - Given I am in t/samples/deep_inheritance/java # -ok 525 - Then the output must match "mmloc_mode:" +ok 525 - When I run "analizo metrics ." # -ok 526 - Then the output must match "mmloc_standard_deviation:" +ok 526 - Then analizo must report that module DogSecondPuppy has acc = 0 # -ok 527 - Then the output must match "mmloc_sum:" +# Scenario afferent connections of the dog family java sample +ok 527 - Given I am in t/samples/deep_inheritance/java # -ok 528 - Then the output must match "mmloc_variance:" +ok 528 - When I run "analizo metrics ." # -ok 529 - Then the output must match "mmloc_quantile_min:" +ok 529 - Then analizo must report that module DogSuperYoung has acc = 0 # -ok 530 - Then the output must match "mmloc_quantile_lower:" +# Scenario afferent connections of the dog family java sample +ok 530 - Given I am in t/samples/deep_inheritance/java # -ok 531 - Then the output must match "mmloc_quantile_median:" +ok 531 - When I run "analizo metrics ." # -ok 532 - Then the output must match "mmloc_quantile_upper:" +ok 532 - Then analizo must report that module Human has acc = 2 # -ok 533 - Then the output must match "mmloc_quantile_max:" +# Scenario afferent connections of the dog family java sample +ok 533 - Given I am in t/samples/deep_inheritance/java # -ok 534 - Then the output must match "mmloc_kurtosis:" +ok 534 - When I run "analizo metrics ." # -ok 535 - Then the output must match "mmloc_skewness:" +ok 535 - Then analizo must report that module ShopController has acc = 0 # -# Scenario "Hello, world" project -ok 536 - Given I am in t/samples/hello_world/ +# Scenario afferent connections of the dog family java sample +ok 536 - Given I am in t/samples/deep_inheritance/java # ok 537 - When I run "analizo metrics ." # -ok 538 - Then the output must match "noa_mean:" +ok 538 - Then analizo must report that module VenderShop has acc = 1 # -ok 539 - Then the output must match "noa_mode:" +# 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 539 - Given I am in t/samples/conditionals/c # -ok 540 - Then the output must match "noa_standard_deviation:" +ok 540 - When I run "analizo metrics ." # -ok 541 - Then the output must match "noa_sum:" +ok 541 - Then analizo must report that module cc1 has accm = 1 # -ok 542 - Then the output must match "noa_variance:" +ok 542 - Then analizo must report that module cc2 has accm = 2 # -ok 543 - Then the output must match "noa_quantile_min:" +ok 543 - Then analizo must report that module cc3 has accm = 3 # -ok 544 - Then the output must match "noa_quantile_lower:" +ok 544 - Then analizo must report that module cc4 has accm = 4 # -ok 545 - Then the output must match "noa_quantile_median:" +# Scenario my "conditionals" C project +ok 545 - Given I am in t/samples/conditionals/csharp # -ok 546 - Then the output must match "noa_quantile_upper:" +ok 546 - When I run "analizo metrics ." # -ok 547 - Then the output must match "noa_quantile_max:" +ok 547 - Then analizo must report that module cc1 has accm = 1 # -ok 548 - Then the output must match "noa_kurtosis:" +ok 548 - Then analizo must report that module cc2 has accm = 2 # -ok 549 - Then the output must match "noa_skewness:" +ok 549 - Then analizo must report that module cc3 has accm = 3 # -# Scenario "Hello, world" project -ok 550 - Given I am in t/samples/hello_world/ +ok 550 - Then analizo must report that module cc4 has accm = 4 # -ok 551 - When I run "analizo metrics ." +# 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 551 - Given I am in t/samples/polygons/cpp # -ok 552 - Then the output must match "noc_mean:" +ok 552 - When I run "analizo metrics ." # -ok 553 - Then the output must match "noc_mode:" +ok 553 - Then analizo must report that module CPolygon has npm = 2 # -ok 554 - Then the output must match "noc_standard_deviation:" +# Scenario number of attributes in the "Animals" project +ok 554 - Given I am in t/samples/polygons/cpp # -ok 555 - Then the output must match "noc_sum:" +ok 555 - When I run "analizo metrics ." # -ok 556 - Then the output must match "noc_variance:" +ok 556 - Then analizo must report that module CTetragon has npm = 1 # -ok 557 - Then the output must match "noc_quantile_min:" +# Scenario number of attributes in the "Animals" project +ok 557 - Given I am in t/samples/polygons/java # -ok 558 - Then the output must match "noc_quantile_lower:" +ok 558 - When I run "analizo metrics ." # -ok 559 - Then the output must match "noc_quantile_median:" +ok 559 - Then analizo must report that module Polygon has npm = 3 # -ok 560 - Then the output must match "noc_quantile_upper:" +# Scenario number of attributes in the "Animals" project +ok 560 - Given I am in t/samples/polygons/csharp # -ok 561 - Then the output must match "noc_quantile_max:" +ok 561 - When I run "analizo metrics ." # -ok 562 - Then the output must match "noc_kurtosis:" +ok 562 - Then analizo must report that module Polygon has npm = 2 # -ok 563 - Then the output must match "noc_skewness:" +# Scenario number of attributes in the "Animals" project +ok 563 - Given I am in t/samples/animals/cpp # -# Scenario "Hello, world" project -ok 564 - Given I am in t/samples/hello_world/ +ok 564 - When I run "analizo metrics ." # -ok 565 - When I run "analizo metrics ." +ok 565 - Then analizo must report that module Animal has npm = 1 # -ok 566 - Then the output must match "nom_mean:" +# Scenario number of attributes in the "Animals" project +ok 566 - Given I am in t/samples/animals/cpp # -ok 567 - Then the output must match "nom_mode:" +ok 567 - When I run "analizo metrics ." # -ok 568 - Then the output must match "nom_standard_deviation:" +ok 568 - Then analizo must report that module Cat has npm = 2 # -ok 569 - Then the output must match "nom_sum:" +# Scenario number of attributes in the "Animals" project +ok 569 - Given I am in t/samples/animals/cpp # -ok 570 - Then the output must match "nom_variance:" +ok 570 - When I run "analizo metrics ." # -ok 571 - Then the output must match "nom_quantile_min:" +ok 571 - Then analizo must report that module Dog has npm = 2 # -ok 572 - Then the output must match "nom_quantile_lower:" +# Scenario number of attributes in the "Animals" project +ok 572 - Given I am in t/samples/animals/java # -ok 573 - Then the output must match "nom_quantile_median:" +ok 573 - When I run "analizo metrics ." # -ok 574 - Then the output must match "nom_quantile_upper:" +ok 574 - Then analizo must report that module Animal has npm = 1 # -ok 575 - Then the output must match "nom_quantile_max:" +# Scenario number of attributes in the "Animals" project +ok 575 - Given I am in t/samples/animals/java # -ok 576 - Then the output must match "nom_kurtosis:" +ok 576 - When I run "analizo metrics ." # -ok 577 - Then the output must match "nom_skewness:" +ok 577 - Then analizo must report that module Cat has npm = 2 # -# Scenario "Hello, world" project -ok 578 - Given I am in t/samples/hello_world/ +# Scenario number of attributes in the "Animals" project +ok 578 - Given I am in t/samples/animals/java # ok 579 - When I run "analizo metrics ." # -ok 580 - Then the output must match "npm_mean:" +ok 580 - Then analizo must report that module Dog has npm = 2 +# +# Scenario number of attributes in the "Animals" project +ok 581 - Given I am in t/samples/animals/csharp # -ok 581 - Then the output must match "npm_mode:" +ok 582 - When I run "analizo metrics ." # -ok 582 - Then the output must match "npm_standard_deviation:" +ok 583 - Then analizo must report that module Animal has npm = 1 # -ok 583 - Then the output must match "npm_sum:" +# Scenario number of attributes in the "Animals" project +ok 584 - Given I am in t/samples/animals/csharp # -ok 584 - Then the output must match "npm_variance:" +ok 585 - When I run "analizo metrics ." # -ok 585 - Then the output must match "npm_quantile_min:" +ok 586 - Then analizo must report that module Cat has npm = 2 # -ok 586 - Then the output must match "npm_quantile_lower:" +# Scenario number of attributes in the "Animals" project +ok 587 - Given I am in t/samples/animals/csharp # -ok 587 - Then the output must match "npm_quantile_median:" +ok 588 - When I run "analizo metrics ." # -ok 588 - Then the output must match "npm_quantile_upper:" +ok 589 - Then analizo must report that module Dog has npm = 2 # -ok 589 - Then the output must match "npm_quantile_max:" +# 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 590 - Given I am in t/samples/hello_world/cpp # -ok 590 - Then the output must match "npm_kurtosis:" +ok 591 - When I run "analizo metrics ." # -ok 591 - Then the output must match "npm_skewness:" +ok 592 - Then analizo must report that the project has total_abstract_classes = 0 # # Scenario "Hello, world" project -ok 592 - Given I am in t/samples/hello_world/ +ok 593 - Given I am in t/samples/hello_world/java # -ok 593 - When I run "analizo metrics ." +ok 594 - When I run "analizo metrics ." # -ok 594 - Then the output must match "npa_mean:" +ok 595 - Then analizo must report that the project has total_abstract_classes = 0 # -ok 595 - Then the output must match "npa_mode:" +# Scenario "Hello, world" project +ok 596 - Given I am in t/samples/hello_world/csharp +# +ok 597 - When I run "analizo metrics ." # -ok 596 - Then the output must match "npa_standard_deviation:" +ok 598 - Then analizo must report that the project has total_abstract_classes = 0 # -ok 597 - Then the output must match "npa_sum:" +# Scenario "Animals" project +ok 599 - Given I am in t/samples/animals/cpp # -ok 598 - Then the output must match "npa_variance:" +ok 600 - When I run "analizo metrics ." # -ok 599 - Then the output must match "npa_quantile_min:" +ok 601 - Then analizo must report that the project has total_abstract_classes = 2 # -ok 600 - Then the output must match "npa_quantile_lower:" +# Scenario "Animals" project +ok 602 - Given I am in t/samples/animals/java # -ok 601 - Then the output must match "npa_quantile_median:" +ok 603 - When I run "analizo metrics ." # -ok 602 - Then the output must match "npa_quantile_upper:" +ok 604 - Then analizo must report that the project has total_abstract_classes = 2 # -ok 603 - Then the output must match "npa_quantile_max:" +# Scenario "Animals" project +ok 605 - Given I am in t/samples/animals/csharp # -ok 604 - Then the output must match "npa_kurtosis:" +ok 606 - When I run "analizo metrics ." # -ok 605 - Then the output must match "npa_skewness:" +ok 607 - Then analizo must report that the project has total_abstract_classes = 1 # -# Scenario "Hello, world" project -ok 606 - Given I am in t/samples/hello_world/ +# Scenario "Polygons" project +ok 608 - Given I am in t/samples/polygons/cpp # -ok 607 - When I run "analizo metrics ." +ok 609 - When I run "analizo metrics ." # -ok 608 - Then the output must match "rfc_mean:" +ok 610 - Then analizo must report that the project has total_abstract_classes = 2 # -ok 609 - Then the output must match "rfc_mode:" +# Scenario "Polygons" project +ok 611 - Given I am in t/samples/polygons/java # -ok 610 - Then the output must match "rfc_standard_deviation:" +ok 612 - When I run "analizo metrics ." # -ok 611 - Then the output must match "rfc_sum:" +ok 613 - Then analizo must report that the project has total_abstract_classes = 2 # -ok 612 - Then the output must match "rfc_variance:" +# Scenario "Polygons" project +ok 614 - Given I am in t/samples/polygons/csharp # -ok 613 - Then the output must match "rfc_quantile_min:" +ok 615 - When I run "analizo metrics ." # -ok 614 - Then the output must match "rfc_quantile_lower:" +ok 616 - Then analizo must report that the project has total_abstract_classes = 2 # -ok 615 - Then the output must match "rfc_quantile_median:" +# Scenario "AbstractClass" project +ok 617 - Given I am in t/samples/abstract_class/java # -ok 616 - Then the output must match "rfc_quantile_upper:" +ok 618 - When I run "analizo metrics ." # -ok 617 - Then the output must match "rfc_quantile_max:" +ok 619 - Then analizo must report that the project has total_abstract_classes = 1 # -ok 618 - Then the output must match "rfc_kurtosis:" +ok 620 - And analizo must report that the project has total_methods_per_abstract_class = 6 # -ok 619 - Then the output must match "rfc_skewness:" +# Scenario "AbstractClass" project +ok 621 - Given I am in t/samples/abstract_class/csharp # -# Scenario "Hello, world" project -ok 620 - Given I am in t/samples/hello_world/ +ok 622 - When I run "analizo metrics ." # -ok 621 - When I run "analizo metrics ." +ok 623 - Then analizo must report that the project has total_abstract_classes = 1 # -ok 622 - Then the output must match "sc_mean:" +ok 624 - And analizo must report that the project has total_methods_per_abstract_class = 1 # -ok 623 - Then the output must match "sc_mode:" +# 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 625 - Given I am in t/samples/hello_world/ # -ok 624 - Then the output must match "sc_standard_deviation:" +ok 626 - When I run "analizo metrics ." # -ok 625 - Then the output must match "sc_sum:" +ok 627 - Then the output must match "acc_mean:" # -ok 626 - Then the output must match "sc_variance:" +ok 628 - Then the output must match "acc_mode:" # -ok 627 - Then the output must match "sc_quantile_min:" +ok 629 - Then the output must match "acc_standard_deviation:" # -ok 628 - Then the output must match "sc_quantile_lower:" +ok 630 - Then the output must match "acc_sum:" # -ok 629 - Then the output must match "sc_quantile_median:" +ok 631 - Then the output must match "acc_variance:" # -ok 630 - Then the output must match "sc_quantile_upper:" +ok 632 - Then the output must match "acc_quantile_min:" # -ok 631 - Then the output must match "sc_quantile_max:" +ok 633 - Then the output must match "acc_quantile_lower:" # -ok 632 - Then the output must match "sc_kurtosis:" +ok 634 - Then the output must match "acc_quantile_median:" # -ok 633 - Then the output must match "sc_skewness:" +ok 635 - Then the output must match "acc_quantile_upper:" # -# 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 634 - Given I am in t/samples/hello_world/cpp +ok 636 - Then the output must match "acc_quantile_max:" # -ok 635 - When I run "analizo metrics ." +ok 637 - Then the output must match "acc_kurtosis:" # -ok 636 - Then analizo must report that the project has total_modules_with_defined_attributes = 1 +ok 638 - Then the output must match "acc_skewness:" # # Scenario "Hello, world" project -ok 637 - Given I am in t/samples/hello_world/java +ok 639 - Given I am in t/samples/hello_world/ # -ok 638 - When I run "analizo metrics ." +ok 640 - When I run "analizo metrics ." # -ok 639 - Then analizo must report that the project has total_modules_with_defined_attributes = 1 +ok 641 - Then the output must match "accm_mean:" # -# Scenario "Hello, world" project -ok 640 - Given I am in t/samples/hello_world/csharp -# -ok 641 - When I run "analizo metrics ." +ok 642 - Then the output must match "accm_mode:" # -ok 642 - Then analizo must report that the project has total_modules_with_defined_attributes = 1 +ok 643 - Then the output must match "accm_standard_deviation:" # -# Scenario "Animals" project -ok 643 - Given I am in t/samples/animals/cpp +ok 644 - Then the output must match "accm_sum:" # -ok 644 - When I run "analizo metrics ." +ok 645 - Then the output must match "accm_variance:" # -ok 645 - Then analizo must report that the project has total_modules_with_defined_attributes = 2 +ok 646 - Then the output must match "accm_quantile_min:" # -# Scenario "Animals" project -ok 646 - Given I am in t/samples/animals/java +ok 647 - Then the output must match "accm_quantile_lower:" # -ok 647 - When I run "analizo metrics ." +ok 648 - Then the output must match "accm_quantile_median:" # -ok 648 - Then analizo must report that the project has total_modules_with_defined_attributes = 2 +ok 649 - Then the output must match "accm_quantile_upper:" # -# Scenario "Animals" project -ok 649 - Given I am in t/samples/animals/csharp +ok 650 - Then the output must match "accm_quantile_max:" # -ok 650 - When I run "analizo metrics ." +ok 651 - Then the output must match "accm_kurtosis:" # -ok 651 - Then analizo must report that the project has total_modules_with_defined_attributes = 2 +ok 652 - Then the output must match "accm_skewness:" # -# 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 652 - Given I am in t/samples/sample_basic/c/ +# Scenario "Hello, world" project +ok 653 - Given I am in t/samples/hello_world/ # -ok 653 - When I run "analizo metrics --global-only ." +ok 654 - When I run "analizo metrics ." # -ok 654 - Then the output must match "cbo_mean:" +ok 655 - Then the output must match "amloc_mean:" # -ok 655 - And the output must not match "_module:" +ok 656 - Then the output must match "amloc_mode:" # -# Scenario short version -ok 656 - Given I am in t/samples/sample_basic/c/ +ok 657 - Then the output must match "amloc_standard_deviation:" # -ok 657 - When I run "analizo metrics -g ." +ok 658 - Then the output must match "amloc_sum:" # -ok 658 - Then the output must match "cbo_mean:" +ok 659 - Then the output must match "amloc_variance:" # -ok 659 - And the output must not match "_module:" +ok 660 - Then the output must match "amloc_quantile_min:" # -# 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 660 - Given I am in t/samples/hello_world/c +ok 661 - Then the output must match "amloc_quantile_lower:" # -ok 661 - When I run "analizo metrics ." +ok 662 - Then the output must match "amloc_quantile_median:" # -ok 662 - Then analizo must report that module main has cbo = 1 +ok 663 - Then the output must match "amloc_quantile_upper:" # -# Scenario "Hello, world" project -ok 663 - Given I am in t/samples/hello_world/cpp +ok 664 - Then the output must match "amloc_quantile_max:" # -ok 664 - When I run "analizo metrics ." +ok 665 - Then the output must match "amloc_kurtosis:" # -ok 665 - Then analizo must report that module main has cbo = 1 +ok 666 - Then the output must match "amloc_skewness:" # # Scenario "Hello, world" project -ok 666 - Given I am in t/samples/hello_world/java -# -ok 667 - When I run "analizo metrics ." +ok 667 - Given I am in t/samples/hello_world/ # -ok 668 - Then analizo must report that module Main has cbo = 1 +ok 668 - When I run "analizo metrics ." # -# Scenario "Hello, world" project -ok 669 - Given I am in t/samples/hello_world/csharp +ok 669 - Then the output must match "anpm_mean:" # -ok 670 - When I run "analizo metrics ." +ok 670 - Then the output must match "anpm_mode:" # -ok 671 - Then analizo must report that module main has cbo = 1 +ok 671 - Then the output must match "anpm_standard_deviation:" # -# Scenario "Animals" project -ok 672 - Given I am in t/samples/animals/cpp +ok 672 - Then the output must match "anpm_sum:" # -ok 673 - When I run "analizo metrics ." +ok 673 - Then the output must match "anpm_variance:" # -ok 674 - Then analizo must report that module main has cbo = 1 +ok 674 - Then the output must match "anpm_quantile_min:" # -# Scenario "Animals" project -ok 675 - Given I am in t/samples/animals/cpp +ok 675 - Then the output must match "anpm_quantile_lower:" # -ok 676 - When I run "analizo metrics ." +ok 676 - Then the output must match "anpm_quantile_median:" # -ok 677 - Then analizo must report that module mammal has cbo = 0 +ok 677 - Then the output must match "anpm_quantile_upper:" # -# Scenario "Animals" project -ok 678 - Given I am in t/samples/animals/java +ok 678 - Then the output must match "anpm_quantile_max:" # -ok 679 - When I run "analizo metrics ." +ok 679 - Then the output must match "anpm_kurtosis:" # -ok 680 - Then analizo must report that module Main has cbo = 1 +ok 680 - Then the output must match "anpm_skewness:" # -# Scenario "Animals" project -ok 681 - Given I am in t/samples/animals/java +# Scenario "Hello, world" project +ok 681 - Given I am in t/samples/hello_world/ # ok 682 - When I run "analizo metrics ." # -ok 683 - Then analizo must report that module Mammal has cbo = 0 +ok 683 - Then the output must match "cbo_mean:" # -# Scenario "Animals" project -ok 684 - Given I am in t/samples/animals/csharp -# -ok 685 - When I run "analizo metrics ." +ok 684 - Then the output must match "cbo_mode:" # -ok 686 - Then analizo must report that module main has cbo = 1 +ok 685 - Then the output must match "cbo_standard_deviation:" # -# Scenario "Animals" project -ok 687 - Given I am in t/samples/animals/csharp +ok 686 - Then the output must match "cbo_sum:" # -ok 688 - When I run "analizo metrics ." +ok 687 - Then the output must match "cbo_variance:" # -ok 689 - Then analizo must report that module Mammal has cbo = 0 +ok 688 - Then the output must match "cbo_quantile_min:" # -# 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 690 - Given I am in t/samples/hello_world/cpp +ok 689 - Then the output must match "cbo_quantile_lower:" # -ok 691 - When I run "analizo metrics ." +ok 690 - Then the output must match "cbo_quantile_median:" # -ok 692 - Then analizo must report that the project has total_methods_per_abstract_class = 0 +ok 691 - Then the output must match "cbo_quantile_upper:" # -# Scenario "Hello, world" project -ok 693 - Given I am in t/samples/hello_world/java +ok 692 - Then the output must match "cbo_quantile_max:" # -ok 694 - When I run "analizo metrics ." +ok 693 - Then the output must match "cbo_kurtosis:" # -ok 695 - Then analizo must report that the project has total_methods_per_abstract_class = 0 +ok 694 - Then the output must match "cbo_skewness:" # # Scenario "Hello, world" project -ok 696 - Given I am in t/samples/hello_world/csharp +ok 695 - Given I am in t/samples/hello_world/ # -ok 697 - When I run "analizo metrics ." +ok 696 - When I run "analizo metrics ." # -ok 698 - Then analizo must report that the project has total_methods_per_abstract_class = 0 +ok 697 - Then the output must match "dit_mean:" # -# Scenario "Animals" project -ok 699 - Given I am in t/samples/animals/cpp +ok 698 - Then the output must match "dit_mode:" # -ok 700 - When I run "analizo metrics ." +ok 699 - Then the output must match "dit_standard_deviation:" # -ok 701 - Then analizo must report that the project has total_methods_per_abstract_class = 1 +ok 700 - Then the output must match "dit_sum:" # -# Scenario "Animals" project -ok 702 - Given I am in t/samples/animals/java +ok 701 - Then the output must match "dit_variance:" # -ok 703 - When I run "analizo metrics ." +ok 702 - Then the output must match "dit_quantile_min:" # -ok 704 - Then analizo must report that the project has total_methods_per_abstract_class = 1 +ok 703 - Then the output must match "dit_quantile_lower:" # -# Scenario "Animals" project -ok 705 - Given I am in t/samples/animals/csharp +ok 704 - Then the output must match "dit_quantile_median:" # -ok 706 - When I run "analizo metrics ." +ok 705 - Then the output must match "dit_quantile_upper:" # -ok 707 - Then analizo must report that the project has total_methods_per_abstract_class = 1 +ok 706 - Then the output must match "dit_quantile_max:" # -# Scenario "Polygons" project -ok 708 - Given I am in t/samples/polygons/cpp +ok 707 - Then the output must match "dit_kurtosis:" # -ok 709 - When I run "analizo metrics ." +ok 708 - Then the output must match "dit_skewness:" # -ok 710 - Then analizo must report that the project has total_methods_per_abstract_class = 2.5 +# Scenario "Hello, world" project +ok 709 - Given I am in t/samples/hello_world/ # -# Scenario "Polygons" project -ok 711 - Given I am in t/samples/polygons/java +ok 710 - When I run "analizo metrics ." # -ok 712 - When I run "analizo metrics ." +ok 711 - Then the output must match "lcom4_mean:" # -ok 713 - Then analizo must report that the project has total_methods_per_abstract_class = 2 +ok 712 - Then the output must match "lcom4_mode:" # -# Scenario "Polygons" project -ok 714 - Given I am in t/samples/polygons/csharp +ok 713 - Then the output must match "lcom4_standard_deviation:" # -ok 715 - When I run "analizo metrics ." +ok 714 - Then the output must match "lcom4_sum:" # -ok 716 - Then analizo must report that the project has total_methods_per_abstract_class = 2 +ok 715 - Then the output must match "lcom4_variance:" # -# 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 717 - Given I am in t/samples/polygons/cpp +ok 716 - Then the output must match "lcom4_quantile_min:" # -ok 718 - When I run "analizo metrics ." +ok 717 - Then the output must match "lcom4_quantile_lower:" # -ok 719 - Then analizo must report that module CPolygon has npm = 2 +ok 718 - Then the output must match "lcom4_quantile_median:" # -# Scenario number of attributes in the "Animals" project -ok 720 - Given I am in t/samples/polygons/cpp +ok 719 - Then the output must match "lcom4_quantile_upper:" # -ok 721 - When I run "analizo metrics ." +ok 720 - Then the output must match "lcom4_quantile_max:" # -ok 722 - Then analizo must report that module CTetragon has npm = 1 +ok 721 - Then the output must match "lcom4_kurtosis:" # -# Scenario number of attributes in the "Animals" project -ok 723 - Given I am in t/samples/polygons/java +ok 722 - Then the output must match "lcom4_skewness:" +# +# Scenario "Hello, world" project +ok 723 - Given I am in t/samples/hello_world/ # ok 724 - When I run "analizo metrics ." # -ok 725 - Then analizo must report that module Polygon has npm = 3 +ok 725 - Then the output must match "loc_mean:" # -# Scenario number of attributes in the "Animals" project -ok 726 - Given I am in t/samples/polygons/csharp +ok 726 - Then the output must match "loc_mode:" # -ok 727 - When I run "analizo metrics ." +ok 727 - Then the output must match "loc_standard_deviation:" # -ok 728 - Then analizo must report that module Polygon has npm = 2 +ok 728 - Then the output must match "loc_sum:" # -# Scenario number of attributes in the "Animals" project -ok 729 - Given I am in t/samples/animals/cpp +ok 729 - Then the output must match "loc_variance:" # -ok 730 - When I run "analizo metrics ." +ok 730 - Then the output must match "loc_quantile_min:" # -ok 731 - Then analizo must report that module Animal has npm = 1 +ok 731 - Then the output must match "loc_quantile_lower:" # -# Scenario number of attributes in the "Animals" project -ok 732 - Given I am in t/samples/animals/cpp +ok 732 - Then the output must match "loc_quantile_median:" # -ok 733 - When I run "analizo metrics ." +ok 733 - Then the output must match "loc_quantile_upper:" # -ok 734 - Then analizo must report that module Cat has npm = 2 +ok 734 - Then the output must match "loc_quantile_max:" # -# Scenario number of attributes in the "Animals" project -ok 735 - Given I am in t/samples/animals/cpp +ok 735 - Then the output must match "loc_kurtosis:" # -ok 736 - When I run "analizo metrics ." +ok 736 - Then the output must match "loc_skewness:" # -ok 737 - Then analizo must report that module Dog has npm = 2 +# Scenario "Hello, world" project +ok 737 - Given I am in t/samples/hello_world/ # -# Scenario number of attributes in the "Animals" project -ok 738 - Given I am in t/samples/animals/java +ok 738 - When I run "analizo metrics ." # -ok 739 - When I run "analizo metrics ." +ok 739 - Then the output must match "mmloc_mean:" # -ok 740 - Then analizo must report that module Animal has npm = 1 +ok 740 - Then the output must match "mmloc_mode:" # -# Scenario number of attributes in the "Animals" project -ok 741 - Given I am in t/samples/animals/java +ok 741 - Then the output must match "mmloc_standard_deviation:" # -ok 742 - When I run "analizo metrics ." +ok 742 - Then the output must match "mmloc_sum:" # -ok 743 - Then analizo must report that module Cat has npm = 2 +ok 743 - Then the output must match "mmloc_variance:" # -# Scenario number of attributes in the "Animals" project -ok 744 - Given I am in t/samples/animals/java +ok 744 - Then the output must match "mmloc_quantile_min:" # -ok 745 - When I run "analizo metrics ." +ok 745 - Then the output must match "mmloc_quantile_lower:" # -ok 746 - Then analizo must report that module Dog has npm = 2 +ok 746 - Then the output must match "mmloc_quantile_median:" # -# Scenario number of attributes in the "Animals" project -ok 747 - Given I am in t/samples/animals/csharp +ok 747 - Then the output must match "mmloc_quantile_upper:" # -ok 748 - When I run "analizo metrics ." +ok 748 - Then the output must match "mmloc_quantile_max:" # -ok 749 - Then analizo must report that module Animal has npm = 1 +ok 749 - Then the output must match "mmloc_kurtosis:" # -# Scenario number of attributes in the "Animals" project -ok 750 - Given I am in t/samples/animals/csharp +ok 750 - Then the output must match "mmloc_skewness:" +# +# Scenario "Hello, world" project +ok 751 - Given I am in t/samples/hello_world/ # -ok 751 - When I run "analizo metrics ." +ok 752 - When I run "analizo metrics ." # -ok 752 - Then analizo must report that module Cat has npm = 2 +ok 753 - Then the output must match "noa_mean:" # -# Scenario number of attributes in the "Animals" project -ok 753 - Given I am in t/samples/animals/csharp +ok 754 - Then the output must match "noa_mode:" # -ok 754 - When I run "analizo metrics ." +ok 755 - Then the output must match "noa_standard_deviation:" # -ok 755 - Then analizo must report that module Dog has npm = 2 +ok 756 - Then the output must match "noa_sum:" # -# 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 756 - When I run "analizo metrics --list" +ok 757 - Then the output must match "noa_variance:" # -ok 757 - Then analizo must present a list of metrics +ok 758 - Then the output must match "noa_quantile_min:" # -# Scenario listing metrics -ok 758 - When I run "analizo metrics -l" +ok 759 - Then the output must match "noa_quantile_lower:" # -ok 759 - Then analizo must present a list of metrics +ok 760 - Then the output must match "noa_quantile_median:" # -# 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 760 - Given I am in t/samples/conditionals/c +ok 761 - Then the output must match "noa_quantile_upper:" # -ok 761 - When I run "analizo metrics ." +ok 762 - Then the output must match "noa_quantile_max:" # -ok 762 - Then analizo must report that module cc1 has accm = 1 +ok 763 - Then the output must match "noa_kurtosis:" # -ok 763 - Then analizo must report that module cc2 has accm = 2 +ok 764 - Then the output must match "noa_skewness:" # -ok 764 - Then analizo must report that module cc3 has accm = 3 +# Scenario "Hello, world" project +ok 765 - Given I am in t/samples/hello_world/ # -ok 765 - Then analizo must report that module cc4 has accm = 4 +ok 766 - When I run "analizo metrics ." # -# Scenario my "conditionals" C project -ok 766 - Given I am in t/samples/conditionals/csharp +ok 767 - Then the output must match "noc_mean:" # -ok 767 - When I run "analizo metrics ." +ok 768 - Then the output must match "noc_mode:" # -ok 768 - Then analizo must report that module cc1 has accm = 1 +ok 769 - Then the output must match "noc_standard_deviation:" # -ok 769 - Then analizo must report that module cc2 has accm = 2 +ok 770 - Then the output must match "noc_sum:" # -ok 770 - Then analizo must report that module cc3 has accm = 3 +ok 771 - Then the output must match "noc_variance:" # -ok 771 - Then analizo must report that module cc4 has accm = 4 +ok 772 - Then the output must match "noc_quantile_min:" # -# Feature output file for metrics tool -# Scenario passing output file in the command line -ok 772 - Given I am in . +ok 773 - Then the output must match "noc_quantile_lower:" # -ok 773 - When I run "analizo metrics --output output.yml.tmp t/samples/sample_basic/" +ok 774 - Then the output must match "noc_quantile_median:" # -ok 774 - Then the contents of "output.yml.tmp" must match "module2" +ok 775 - Then the output must match "noc_quantile_upper:" # -ok 775 - And the exit status must be 0 +ok 776 - Then the output must match "noc_quantile_max:" # -# Scenario passing output file without permission to write -ok 776 - Given I am in . +ok 777 - Then the output must match "noc_kurtosis:" # -ok 777 - When I run "touch output.tmp" +ok 778 - Then the output must match "noc_skewness:" # -ok 778 - And I run "chmod 000 output.tmp" +# Scenario "Hello, world" project +ok 779 - Given I am in t/samples/hello_world/ # -ok 779 - And I run "analizo metrics --output output.tmp t/samples/sample_basic/" +ok 780 - When I run "analizo metrics ." # -ok 780 - Then the exit status must not be 0 +ok 781 - Then the output must match "nom_mean:" # -ok 781 - And analizo must emit a warning matching "Permission denied" +ok 782 - Then the output must match "nom_mode:" # -# Scenario passing output file in an unexisting directory -ok 782 - Given I am in . +ok 783 - Then the output must match "nom_standard_deviation:" # -ok 783 - When I run "analizo metrics --output /this/directory/must/not/exists/output.yml t/samples" +ok 784 - Then the output must match "nom_sum:" # -ok 784 - Then the exit status must not be 0 +ok 785 - Then the output must match "nom_variance:" # -ok 785 - And analizo must emit a warning matching "No such file or directory" +ok 786 - Then the output must match "nom_quantile_min:" # -# 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 786 - Given I am in t/samples/hello_world/cpp +ok 787 - Then the output must match "nom_quantile_lower:" # -ok 787 - When I run "analizo metrics ." +ok 788 - Then the output must match "nom_quantile_median:" # -ok 788 - Then analizo must report that the project has total_modules_with_defined_methods = 2 +ok 789 - Then the output must match "nom_quantile_upper:" # -# Scenario "Hello, world" project -ok 789 - Given I am in t/samples/hello_world/java +ok 790 - Then the output must match "nom_quantile_max:" # -ok 790 - When I run "analizo metrics ." +ok 791 - Then the output must match "nom_kurtosis:" # -ok 791 - Then analizo must report that the project has total_modules_with_defined_methods = 2 +ok 792 - Then the output must match "nom_skewness:" # # Scenario "Hello, world" project -ok 792 - Given I am in t/samples/hello_world/csharp +ok 793 - Given I am in t/samples/hello_world/ # -ok 793 - When I run "analizo metrics ." +ok 794 - When I run "analizo metrics ." # -ok 794 - Then analizo must report that the project has total_modules_with_defined_methods = 2 +ok 795 - Then the output must match "npm_mean:" # -# Scenario "Animals" project -ok 795 - Given I am in t/samples/animals/cpp +ok 796 - Then the output must match "npm_mode:" # -ok 796 - When I run "analizo metrics ." +ok 797 - Then the output must match "npm_standard_deviation:" # -ok 797 - Then analizo must report that the project has total_modules_with_defined_methods = 5 +ok 798 - Then the output must match "npm_sum:" # -# Scenario "Animals" project -ok 798 - Given I am in t/samples/animals/java +ok 799 - Then the output must match "npm_variance:" # -ok 799 - When I run "analizo metrics ." +ok 800 - Then the output must match "npm_quantile_min:" # -ok 800 - Then analizo must report that the project has total_modules_with_defined_methods = 5 +ok 801 - Then the output must match "npm_quantile_lower:" # -# Scenario "Animals" project -ok 801 - Given I am in t/samples/animals/csharp +ok 802 - Then the output must match "npm_quantile_median:" # -ok 802 - When I run "analizo metrics ." +ok 803 - Then the output must match "npm_quantile_upper:" # -ok 803 - Then analizo must report that the project has total_modules_with_defined_methods = 5 +ok 804 - Then the output must match "npm_quantile_max:" # -# 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 804 - Given I am in t/samples/mixed +ok 805 - Then the output must match "npm_kurtosis:" # -ok 805 - When I run "analizo metrics --language c ." +ok 806 - Then the output must match "npm_skewness:" # -ok 806 - Then the output must match "native_backend" +# Scenario "Hello, world" project +ok 807 - Given I am in t/samples/hello_world/ # -ok 807 - And the output must not match "UI" +ok 808 - When I run "analizo metrics ." # -ok 808 - And the output must not match "Backend" +ok 809 - Then the output must match "npa_mean:" # -ok 809 - And the output must not match "CSharp_Backend" +ok 810 - Then the output must match "npa_mode:" # -# Scenario filtering for Java code -ok 810 - Given I am in t/samples/mixed +ok 811 - Then the output must match "npa_standard_deviation:" # -ok 811 - When I run "analizo metrics --language java ." +ok 812 - Then the output must match "npa_sum:" # -ok 812 - Then the output must match "UI" +ok 813 - Then the output must match "npa_variance:" # -ok 813 - And the output must match "Backend" +ok 814 - Then the output must match "npa_quantile_min:" # -ok 814 - And the output must not match "native_backend" +ok 815 - Then the output must match "npa_quantile_lower:" # -ok 815 - And the output must not match "CSharp_Backend" +ok 816 - Then the output must match "npa_quantile_median:" # -# Scenario filtering for CSharp code -ok 816 - Given I am in t/samples/mixed +ok 817 - Then the output must match "npa_quantile_upper:" # -ok 817 - When I run "analizo metrics --language csharp ." +ok 818 - Then the output must match "npa_quantile_max:" # -ok 818 - Then the output must match "CSharp_Backend" +ok 819 - Then the output must match "npa_kurtosis:" # -ok 819 - And the output must not match "UI" +ok 820 - Then the output must match "npa_skewness:" # -ok 820 - And the output must not match "native_backend" +# Scenario "Hello, world" project +ok 821 - Given I am in t/samples/hello_world/ # -# Scenario listing languages -ok 821 - When I run "analizo metrics --language list" +ok 822 - When I run "analizo metrics ." # -ok 822 - Then analizo must present a list of languages +ok 823 - Then the output must match "rfc_mean:" # -# 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 823 - Given I am in t/samples/animals/cpp +ok 824 - Then the output must match "rfc_mode:" # -ok 824 - When I run "analizo metrics ." +ok 825 - Then the output must match "rfc_standard_deviation:" # -ok 825 - Then analizo must report that module Dog has noa = 1 +ok 826 - Then the output must match "rfc_sum:" # -ok 826 - And analizo must report that module Cat has noa = 1 +ok 827 - Then the output must match "rfc_variance:" # -ok 827 - And analizo must report that module main has noa = 0 +ok 828 - Then the output must match "rfc_quantile_min:" # -# Scenario number of attributes in the "Animals" project -ok 828 - Given I am in t/samples/animals/java +ok 829 - Then the output must match "rfc_quantile_lower:" # -ok 829 - When I run "analizo metrics ." +ok 830 - Then the output must match "rfc_quantile_median:" # -ok 830 - Then analizo must report that module Dog has noa = 1 +ok 831 - Then the output must match "rfc_quantile_upper:" # -ok 831 - And analizo must report that module Cat has noa = 1 +ok 832 - Then the output must match "rfc_quantile_max:" # -ok 832 - And analizo must report that module Main has noa = 0 +ok 833 - Then the output must match "rfc_kurtosis:" # -# Scenario number of attributes in the "Animals" project -ok 833 - Given I am in t/samples/animals/csharp +ok 834 - Then the output must match "rfc_skewness:" # -ok 834 - When I run "analizo metrics ." +# Scenario "Hello, world" project +ok 835 - Given I am in t/samples/hello_world/ # -ok 835 - Then analizo must report that module Dog has noa = 1 +ok 836 - When I run "analizo metrics ." # -ok 836 - And analizo must report that module Cat has noa = 1 +ok 837 - Then the output must match "sc_mean:" # -ok 837 - And analizo must report that module main has noa = 0 +ok 838 - Then the output must match "sc_mode:" # -# 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 838 - Given I am in t/samples/hello_world/cpp +ok 839 - Then the output must match "sc_standard_deviation:" # -ok 839 - When I run "analizo metrics ." +ok 840 - Then the output must match "sc_sum:" # -ok 840 - Then analizo must report that the project has total_abstract_classes = 0 +ok 841 - Then the output must match "sc_variance:" # -# Scenario "Hello, world" project -ok 841 - Given I am in t/samples/hello_world/java +ok 842 - Then the output must match "sc_quantile_min:" # -ok 842 - When I run "analizo metrics ." +ok 843 - Then the output must match "sc_quantile_lower:" # -ok 843 - Then analizo must report that the project has total_abstract_classes = 0 +ok 844 - Then the output must match "sc_quantile_median:" # -# Scenario "Hello, world" project -ok 844 - Given I am in t/samples/hello_world/csharp +ok 845 - Then the output must match "sc_quantile_upper:" # -ok 845 - When I run "analizo metrics ." +ok 846 - Then the output must match "sc_quantile_max:" # -ok 846 - Then analizo must report that the project has total_abstract_classes = 0 +ok 847 - Then the output must match "sc_kurtosis:" # -# Scenario "Animals" project -ok 847 - Given I am in t/samples/animals/cpp +ok 848 - Then the output must match "sc_skewness:" # -ok 848 - When I run "analizo metrics ." +# 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 849 - Given I am in t/samples/animals/cpp # -ok 849 - Then analizo must report that the project has total_abstract_classes = 2 +ok 850 - When I run "analizo metrics ." # -# Scenario "Animals" project -ok 850 - Given I am in t/samples/animals/java +ok 851 - Then analizo must report that module Dog has anpm = 0.5 # -ok 851 - When I run "analizo metrics ." +ok 852 - And analizo must report that module Cat has anpm = 0.5 # -ok 852 - Then analizo must report that the project has total_abstract_classes = 2 +ok 853 - And analizo must report that module main has anpm = 0 # -# Scenario "Animals" project -ok 853 - Given I am in t/samples/animals/csharp -# -ok 854 - When I run "analizo metrics ." +# Scenario number of parameters in the "Animals" project +ok 854 - Given I am in t/samples/animals/java # -ok 855 - Then analizo must report that the project has total_abstract_classes = 1 +ok 855 - When I run "analizo metrics ." # -# Scenario "Polygons" project -ok 856 - Given I am in t/samples/polygons/cpp +ok 856 - Then analizo must report that module Dog has anpm = 0.5 # -ok 857 - When I run "analizo metrics ." +ok 857 - And analizo must report that module Cat has anpm = 0.5 # -ok 858 - Then analizo must report that the project has total_abstract_classes = 2 +ok 858 - And analizo must report that module Main has anpm = 1 # -# Scenario "Polygons" project -ok 859 - Given I am in t/samples/polygons/java +# Scenario number of parameters in the "Animals" project +ok 859 - Given I am in t/samples/animals/csharp # ok 860 - When I run "analizo metrics ." # -ok 861 - Then analizo must report that the project has total_abstract_classes = 2 +ok 861 - Then analizo must report that module Dog has anpm = 0.5 # -# Scenario "Polygons" project -ok 862 - Given I am in t/samples/polygons/csharp +ok 862 - And analizo must report that module Cat has anpm = 0.5 # -ok 863 - When I run "analizo metrics ." +ok 863 - And analizo must report that module main has anpm = 1 # -ok 864 - Then analizo must report that the project has total_abstract_classes = 2 +# 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 864 - Given I am in t/samples/hello_world/cpp # -# Scenario "AbstractClass" project -ok 865 - Given I am in t/samples/abstract_class/java +ok 865 - When I run "analizo metrics ." # -ok 866 - When I run "analizo metrics ." +ok 866 - Then analizo must report that the project has total_modules_with_defined_methods = 2 # -ok 867 - Then analizo must report that the project has total_abstract_classes = 1 +# Scenario "Hello, world" project +ok 867 - Given I am in t/samples/hello_world/java # -ok 868 - And analizo must report that the project has total_methods_per_abstract_class = 6 +ok 868 - When I run "analizo metrics ." # -# Scenario "AbstractClass" project -ok 869 - Given I am in t/samples/abstract_class/csharp +ok 869 - Then analizo must report that the project has total_modules_with_defined_methods = 2 # -ok 870 - When I run "analizo metrics ." +# Scenario "Hello, world" project +ok 870 - Given I am in t/samples/hello_world/csharp # -ok 871 - Then analizo must report that the project has total_abstract_classes = 1 +ok 871 - When I run "analizo metrics ." # -ok 872 - And analizo must report that the project has total_methods_per_abstract_class = 1 +ok 872 - Then analizo must report that the project has total_modules_with_defined_methods = 2 # -# 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 873 - Given I am in t/samples/hello_world/cpp +# Scenario "Animals" project +ok 873 - Given I am in t/samples/animals/cpp # ok 874 - When I run "analizo metrics ." # -ok 875 - Then analizo must report that the project has change_cost = 0.75 +ok 875 - Then analizo must report that the project has total_modules_with_defined_methods = 5 # -# Scenario "Hello, world" project -ok 876 - Given I am in t/samples/hello_world/java +# Scenario "Animals" project +ok 876 - Given I am in t/samples/animals/java # ok 877 - When I run "analizo metrics ." # -ok 878 - Then analizo must report that the project has change_cost = 0.75 +ok 878 - Then analizo must report that the project has total_modules_with_defined_methods = 5 # -# Scenario "Hello, world" project -ok 879 - Given I am in t/samples/hello_world/csharp +# Scenario "Animals" project +ok 879 - Given I am in t/samples/animals/csharp # ok 880 - When I run "analizo metrics ." # -ok 881 - Then analizo must report that the project has change_cost = 0.75 +ok 881 - Then analizo must report that the project has total_modules_with_defined_methods = 5 # -# Scenario "Animals" project -ok 882 - Given I am in t/samples/animals/cpp +# 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 882 - Given I am in t/samples/sample_basic/c/ # -ok 883 - When I run "analizo metrics ." +ok 883 - When I run "analizo metrics --global-only ." # -ok 884 - Then analizo must report that the project has change_cost = 0.44 +ok 884 - Then the output must match "cbo_mean:" # -# Scenario "Animals" project -ok 885 - Given I am in t/samples/animals/java +ok 885 - And the output must not match "_module:" # -ok 886 - When I run "analizo metrics ." +# Scenario short version +ok 886 - Given I am in t/samples/sample_basic/c/ # -ok 887 - Then analizo must report that the project has change_cost = 0.44 +ok 887 - When I run "analizo metrics -g ." # -# Scenario "Animals" project -ok 888 - Given I am in t/samples/animals/csharp +ok 888 - Then the output must match "cbo_mean:" # -ok 889 - When I run "analizo metrics ." +ok 889 - And the output must not match "_module:" # -ok 890 - Then analizo must report that the project has change_cost = 0.44 +# 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 890 - Given I am in t/samples/hello_world/cpp # -# Scenario "Hieracchical Graph" project -ok 891 - Given I am in t/samples/hierarchical_graph/c +ok 891 - When I run "analizo metrics ." # -ok 892 - When I run "analizo metrics ." +ok 892 - Then analizo must report that the project has total_modules_with_defined_attributes = 1 # -ok 893 - Then analizo must report that the project has change_cost = 0.42 +# Scenario "Hello, world" project +ok 893 - Given I am in t/samples/hello_world/java # -# Scenario "Hieracchical Graph" project -ok 894 - Given I am in t/samples/hierarchical_graph/csharp +ok 894 - When I run "analizo metrics ." # -ok 895 - When I run "analizo metrics ." +ok 895 - Then analizo must report that the project has total_modules_with_defined_attributes = 1 # -ok 896 - Then analizo must report that the project has change_cost = 0.28 +# Scenario "Hello, world" project +ok 896 - Given I am in t/samples/hello_world/csharp # -# Scenario "Cyclical Graph" project -ok 897 - Given I am in t/samples/cyclical_graph/c +ok 897 - When I run "analizo metrics ." # -ok 898 - When I run "analizo metrics ." +ok 898 - Then analizo must report that the project has total_modules_with_defined_attributes = 1 # -ok 899 - Then analizo must report that the project has change_cost = 0.5 +# Scenario "Animals" project +ok 899 - Given I am in t/samples/animals/cpp # -# Scenario "Cyclical Graph" project -ok 900 - Given I am in t/samples/cyclical_graph/csharp +ok 900 - When I run "analizo metrics ." # -ok 901 - When I run "analizo metrics ." +ok 901 - Then analizo must report that the project has total_modules_with_defined_attributes = 2 # -ok 902 - Then analizo must report that the project has change_cost = 0.36 +# Scenario "Animals" project +ok 902 - Given I am in t/samples/animals/java # -# 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 903 - Given I am in t/samples/deep_inheritance/java +ok 903 - When I run "analizo metrics ." # -ok 904 - When I run "analizo metrics ." +ok 904 - Then analizo must report that the project has total_modules_with_defined_attributes = 2 # -ok 905 - Then analizo must report that module Dog has acc = 7 +# Scenario "Animals" project +ok 905 - Given I am in t/samples/animals/csharp # -# Scenario afferent connections of the dog family java sample -ok 906 - Given I am in t/samples/deep_inheritance/java +ok 906 - When I run "analizo metrics ." # -ok 907 - When I run "analizo metrics ." +ok 907 - Then analizo must report that the project has total_modules_with_defined_attributes = 2 # -ok 908 - Then analizo must report that module DogFirstGreatGrandson has acc = 1 +# Feature output file for metrics tool +# Scenario passing output file in the command line +ok 908 - Given I am in . # -# Scenario afferent connections of the dog family java sample -ok 909 - Given I am in t/samples/deep_inheritance/java +ok 909 - When I run "analizo metrics --output output.yml.tmp t/samples/sample_basic/" # -ok 910 - When I run "analizo metrics ." +ok 910 - Then the contents of "output.yml.tmp" must match "module2" # -ok 911 - Then analizo must report that module DogFirstPuppy has acc = 4 +ok 911 - And the exit status must be 0 # -# Scenario afferent connections of the dog family java sample -ok 912 - Given I am in t/samples/deep_inheritance/java +# Scenario passing output file without permission to write +ok 912 - Given I am in . # -ok 913 - When I run "analizo metrics ." +ok 913 - When I run "touch output.tmp" # -ok 914 - Then analizo must report that module DogGrandson has acc = 3 +ok 914 - And I run "chmod 000 output.tmp" # -# Scenario afferent connections of the dog family java sample -ok 915 - Given I am in t/samples/deep_inheritance/java +ok 915 - And I run "analizo metrics --output output.tmp t/samples/sample_basic/" # -ok 916 - When I run "analizo metrics ." +ok 916 - Then the exit status must not be 0 # -ok 917 - Then analizo must report that module DogSecondGreatGrandson has acc = 0 +ok 917 - And analizo must emit a warning matching "Permission denied" # -# Scenario afferent connections of the dog family java sample -ok 918 - Given I am in t/samples/deep_inheritance/java +# Scenario passing output file in an unexisting directory +ok 918 - Given I am in . # -ok 919 - When I run "analizo metrics ." +ok 919 - When I run "analizo metrics --output /this/directory/must/not/exists/output.yml t/samples" # -ok 920 - Then analizo must report that module DogSecondPuppy has acc = 0 +ok 920 - Then the exit status must not be 0 # -# Scenario afferent connections of the dog family java sample -ok 921 - Given I am in t/samples/deep_inheritance/java +ok 921 - And analizo must emit a warning matching "No such file or directory" # -ok 922 - 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 922 - Given I am in t/samples/hello_world/c # -ok 923 - Then analizo must report that module DogSuperYoung has acc = 0 +ok 923 - When I run "analizo metrics ." # -# Scenario afferent connections of the dog family java sample -ok 924 - Given I am in t/samples/deep_inheritance/java +ok 924 - Then analizo must report that module main has cbo = 1 # -ok 925 - When I run "analizo metrics ." +# Scenario "Hello, world" project +ok 925 - Given I am in t/samples/hello_world/cpp # -ok 926 - Then analizo must report that module Human has acc = 2 +ok 926 - When I run "analizo metrics ." # -# Scenario afferent connections of the dog family java sample -ok 927 - Given I am in t/samples/deep_inheritance/java +ok 927 - Then analizo must report that module main has cbo = 1 # -ok 928 - When I run "analizo metrics ." +# Scenario "Hello, world" project +ok 928 - Given I am in t/samples/hello_world/java # -ok 929 - Then analizo must report that module ShopController has acc = 0 +ok 929 - When I run "analizo metrics ." # -# Scenario afferent connections of the dog family java sample -ok 930 - Given I am in t/samples/deep_inheritance/java +ok 930 - Then analizo must report that module Main has cbo = 1 # -ok 931 - When I run "analizo metrics ." +# Scenario "Hello, world" project +ok 931 - Given I am in t/samples/hello_world/csharp # -ok 932 - Then analizo must report that module VenderShop has acc = 1 +ok 932 - When I run "analizo metrics ." # -# 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 +ok 933 - Then analizo must report that module main has cbo = 1 # -ok 934 - When I run "analizo metrics ." +# Scenario "Animals" project +ok 934 - Given I am in t/samples/animals/cpp # -ok 935 - Then analizo must report that the project has total_modules = 3 +ok 935 - When I run "analizo metrics ." # -# 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 936 - Given I am in t/samples/animals/cpp +ok 936 - Then analizo must report that module main has cbo = 1 # -ok 937 - When I run "analizo metrics ." +# Scenario "Animals" project +ok 937 - Given I am in t/samples/animals/cpp # -ok 938 - Then analizo must report that module Dog has anpm = 0.5 +ok 938 - When I run "analizo metrics ." # -ok 939 - And analizo must report that module Cat has anpm = 0.5 +ok 939 - Then analizo must report that module mammal has cbo = 0 # -ok 940 - And analizo must report that module main has anpm = 0 +# Scenario "Animals" project +ok 940 - Given I am in t/samples/animals/java # -# Scenario number of parameters in the "Animals" project -ok 941 - Given I am in t/samples/animals/java +ok 941 - When I run "analizo metrics ." # -ok 942 - When I run "analizo metrics ." +ok 942 - Then analizo must report that module Main has cbo = 1 # -ok 943 - Then analizo must report that module Dog has anpm = 0.5 +# Scenario "Animals" project +ok 943 - Given I am in t/samples/animals/java # -ok 944 - And analizo must report that module Cat has anpm = 0.5 +ok 944 - When I run "analizo metrics ." # -ok 945 - And analizo must report that module Main has anpm = 1 +ok 945 - Then analizo must report that module Mammal has cbo = 0 # -# Scenario number of parameters in the "Animals" project +# Scenario "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 Dog has anpm = 0.5 +ok 948 - Then analizo must report that module main has cbo = 1 # -ok 949 - And analizo must report that module Cat has anpm = 0.5 +# Scenario "Animals" project +ok 949 - Given I am in t/samples/animals/csharp # -ok 950 - And analizo must report that module main has anpm = 1 +ok 950 - When I run "analizo metrics ." # -# Feature group by modules -# Scenario sample project -ok 951 - Given I am in t/samples/sample_basic/c/ +ok 951 - Then analizo must report that module Mammal has cbo = 0 # -ok 952 - When I run "analizo graph --modules ." +# 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 952 - Given I am in t/samples/hello_world/cpp # -ok 953 - Then analizo must report that "module1" depends on "module2" +ok 953 - When I run "analizo metrics ." # -ok 954 - Then analizo must report that "module1" depends on "module3" +ok 954 - Then analizo must report that the project has change_cost = 0.75 # -# Feature omitting certain modules -# Scenario omitting say_bye -ok 955 - Given I am in t/samples/sample_basic/ +# Scenario "Hello, world" project +ok 955 - Given I am in t/samples/hello_world/java # -ok 956 - When I run "analizo graph --omit 'module2::say_bye()' ." +ok 956 - When I run "analizo metrics ." # -ok 957 - Then the output must not match "module2::say_bye()" +ok 957 - Then analizo must report that the project has change_cost = 0.75 # -# Scenario omitting two functions -ok 958 - Given I am in t/samples/sample_basic/ +# Scenario "Hello, world" project +ok 958 - Given I am in t/samples/hello_world/csharp # -ok 959 - When I run "analizo graph --omit 'module2::say_bye()','module2::say_hello()' ." +ok 959 - When I run "analizo metrics ." # -ok 960 - Then the output must not match "module2::say_bye()" +ok 960 - Then analizo must report that the project has change_cost = 0.75 # -ok 961 - Then the output must not match "module2::say_hello()" +# Scenario "Animals" project +ok 961 - Given I am in t/samples/animals/cpp # -# Scenario omitting depending functions -ok 962 - Given I am in t/samples/sample_basic/ +ok 962 - When I run "analizo metrics ." # -ok 963 - When I run "analizo graph --omit 'module1::main()' ." +ok 963 - Then analizo must report that the project has change_cost = 0.44 # -ok 964 - Then the output must not match "module1::main()" +# Scenario "Animals" project +ok 964 - Given I am in t/samples/animals/java # -# Feature clustering subroutines in the same module together -# Scenario clustering dependencies -ok 965 - Given I am in t/samples/sample_basic/c/ +ok 965 - When I run "analizo metrics ." # -ok 966 - When I run "analizo graph --cluster ." +ok 966 - Then analizo must report that the project has change_cost = 0.44 # -ok 967 - Then analizo must report that "module1::main()" is part of "module1" +# Scenario "Animals" project +ok 967 - Given I am in t/samples/animals/csharp # -ok 968 - Then analizo must report that "module2::say_hello()" is part of "module2" +ok 968 - When I run "analizo metrics ." # -ok 969 - Then analizo must report that "module2::say_bye()" is part of "module2" +ok 969 - Then analizo must report that the project has change_cost = 0.44 # -ok 970 - Then analizo must report that "module3::variable" is part of "module3" +# Scenario "Hieracchical Graph" project +ok 970 - Given I am in t/samples/hierarchical_graph/c # -ok 971 - Then analizo must report that "module3::callback()" is part of "module3" +ok 971 - When I run "analizo metrics ." # -# Feature displaying version -# Scenario running without any arguments -ok 972 - When I run "analizo graph" +ok 972 - Then analizo must report that the project has change_cost = 0.42 # -ok 973 - Then analizo must emit a warning matching "Usage:" +# Scenario "Hieracchical Graph" project +ok 973 - Given I am in t/samples/hierarchical_graph/csharp # -ok 974 - And the exit status must not be 0 +ok 974 - When I run "analizo metrics ." # -# Feature plain analizo graph run -# Scenario simply running analizo -ok 975 - Given I am in t/samples/sample_basic/c/ +ok 975 - Then analizo must report that the project has change_cost = 0.28 # -ok 976 - When I run "analizo graph ." +# Scenario "Cyclical Graph" project +ok 976 - Given I am in t/samples/cyclical_graph/c # -ok 977 - Then analizo must report that "module1::main()" depends on "module3::variable" +ok 977 - When I run "analizo metrics ." # -ok 978 - Then analizo must report that "module1::main()" depends on "module3::callback()" +ok 978 - Then analizo must report that the project has change_cost = 0.5 # -ok 979 - Then analizo must report that "module1::main()" depends on "module2::say_bye()" +# Scenario "Cyclical Graph" project +ok 979 - Given I am in t/samples/cyclical_graph/csharp # -ok 980 - Then analizo must report that "module1::main()" depends on "module2::say_hello()" +ok 980 - When I run "analizo metrics ." # -ok 981 - And the exit status must be 0 +ok 981 - Then analizo must report that the project has change_cost = 0.36 # -# Feature functions calls -# Scenario detect function calls among classes -ok 982 - Given I am in t/samples/animals/cpp +# 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 982 - Given I am in t/samples/hello_world/cpp # -ok 983 - When I run "analizo graph ." +ok 983 - When I run "analizo metrics ." # -ok 984 - Then analizo must report that "Cat::Cat(char *)" depends on "Cat::_name" +ok 984 - Then analizo must report that the project has total_methods_per_abstract_class = 0 # -ok 985 - And analizo must not report that "Cat::Cat(char *)" depends on "Cat::name()" +# Scenario "Hello, world" project +ok 985 - Given I am in t/samples/hello_world/java # -ok 986 - And the exit status must be 0 +ok 986 - When I run "analizo metrics ." # -# Feature input files for graph tool -# Scenario passing specific files in the command line -ok 987 - Given I am in t/samples/sample_basic/c +ok 987 - Then analizo must report that the project has total_methods_per_abstract_class = 0 # -ok 988 - When I run "analizo graph module1.c module2.c" +# Scenario "Hello, world" project +ok 988 - Given I am in t/samples/hello_world/csharp # -ok 989 - Then the output must match "module1" +ok 989 - When I run "analizo metrics ." # -ok 990 - And the output must match "module2" +ok 990 - Then analizo must report that the project has total_methods_per_abstract_class = 0 # -ok 991 - And the output must not match "module3" +# Scenario "Animals" project +ok 991 - Given I am in t/samples/animals/cpp # -# Scenario passing unexisting file -ok 992 - Given I am in t/samples/sample_basic/c +ok 992 - When I run "analizo metrics ." # -ok 993 - When I run "analizo graph unexisting-file.c" +ok 993 - Then analizo must report that the project has total_methods_per_abstract_class = 1 # -ok 994 - Then analizo must emit a warning matching "is not readable" +# Scenario "Animals" project +ok 994 - Given I am in t/samples/animals/java # -# Feature output file for graph tool -# Scenario passing output file in the command line -ok 995 - Given I am in . +ok 995 - When I run "analizo metrics ." # -ok 996 - When I run "analizo graph --output output.dot.tmp t/samples/sample_basic/c/" +ok 996 - Then analizo must report that the project has total_methods_per_abstract_class = 1 # -ok 997 - Then the contents of "output.dot.tmp" must match "module1" +# Scenario "Animals" project +ok 997 - Given I am in t/samples/animals/csharp # -ok 998 - And the exit status must be 0 +ok 998 - When I run "analizo metrics ." # -# Scenario passing output file in an unexisting directory -ok 999 - Given I am in . +ok 999 - Then analizo must report that the project has total_methods_per_abstract_class = 1 # -ok 1000 - When I run "analizo graph --output /this/directory/must/not/exists/output.dot t/samples/sample_basic/c/" +# Scenario "Polygons" project +ok 1000 - Given I am in t/samples/polygons/cpp # -ok 1001 - Then analizo must emit a warning matching "No such file or directory" +ok 1001 - When I run "analizo metrics ." # -ok 1002 - And the exit status must not be 0 +ok 1002 - Then analizo must report that the project has total_methods_per_abstract_class = 2.5 # -# Scenario passing output file without permission to write -ok 1003 - Given I am in . +# Scenario "Polygons" project +ok 1003 - Given I am in t/samples/polygons/java # -ok 1004 - When I run "touch output.tmp" +ok 1004 - When I run "analizo metrics ." # -ok 1005 - And I run "chmod 000 output.tmp" +ok 1005 - Then analizo must report that the project has total_methods_per_abstract_class = 2 # -ok 1006 - And I run "analizo graph --output output.tmp t/samples/sample_basic/c/" +# Scenario "Polygons" project +ok 1006 - Given I am in t/samples/polygons/csharp # -ok 1007 - Then the exit status must not be 0 +ok 1007 - When I run "analizo metrics ." # -ok 1008 - And analizo must emit a warning matching "Permission denied" +ok 1008 - Then analizo must report that the project has total_methods_per_abstract_class = 2 # 1..1008 ok All tests successful. -Files=54, Tests=1627, 322 wallclock secs ( 1.10 usr 0.30 sys + 221.28 cusr 37.70 csys = 260.38 CPU) +Files=54, Tests=1627, 663 wallclock secs ( 0.83 usr 0.26 sys + 215.80 cusr 43.33 csys = 260.22 CPU) Result: PASS make[1]: Leaving directory '/build/analizo-1.25.4' create-stamp debian/debhelper-build-stamp @@ -5195,104 +5238,104 @@ debian/rules override_dh_auto_install make[1]: Entering directory '/build/analizo-1.25.4' dh_auto_install - make -j3 install DESTDIR=/build/analizo-1.25.4/debian/analizo AM_UPDATE_INFO_DIR=no PREFIX=/usr + make -j4 install DESTDIR=/build/analizo-1.25.4/debian/analizo AM_UPDATE_INFO_DIR=no PREFIX=/usr make[2]: Entering directory '/build/analizo-1.25.4' 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/analizo-1.25.4/debian/analizo/usr/share/perl5/profile.pl Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/profile.pl Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/Class.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/Git.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/Class.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/BDD/Cucumber/Extension.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/ModuleMetrics.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/LanguageFilter.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/auto/share/dist/Analizo/README +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/auto/share/dist/Analizo/bash-completion/analizo +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Model.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/FilenameFilter.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Extractor.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Model.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/GlobalMetrics.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/ModuleMetric.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metrics.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/GlobalMetric/TotalAbstractClasses.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/ModuleMetrics.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Extractor.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/LanguageFilter.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/FilenameFilter.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/ModuleMetric.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/GlobalMetric/ChangeCost.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/GlobalMetric/TotalAbstractClasses.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/GlobalMetric/MethodsPerAbstractClass.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/files_graph.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/graph.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/metrics_history.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/metrics_batch.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/metrics.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/graph.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/help.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/tree_evolution.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/AfferentConnections.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/MaximumMethodLinesOfCode.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/AverageNumberOfParameters.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/AverageCycloComplexity.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/CouplingBetweenObjects.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/DepthOfInheritanceTree.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/LackOfCohesionOfMethods.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/metrics_history.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/metrics_batch.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Command/files_graph.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Extractor/Doxyparse.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Output.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Job.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Git.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Runner.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Directories.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Output/CSV.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Output/DB.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Job/Git.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Job/Directories.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Runner/Parallel.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Runner/Sequential.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/LinesOfCode.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfPublicAttributes.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfPublicMethods.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfAttributes.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/AverageMethodLinesOfCode.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/AverageNumberOfParameters.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/DepthOfInheritanceTree.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/MaximumMethodLinesOfCode.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/AfferentConnections.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/CouplingBetweenObjects.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/ResponseForClass.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfPublicMethods.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfMethods.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/AverageCycloComplexity.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/LackOfCohesionOfMethods.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/StructuralComplexity.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/AverageMethodLinesOfCode.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfChildren.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfPublicAttributes.pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Metric/NumberOfMethods.pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Filter/Client.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Directories.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Output.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Job.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Runner.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Git.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Output/DB.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Output/CSV.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Runner/Sequential.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Runner/Parallel.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Job/Directories.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Batch/Job/Git.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Analizo/Extractor/Doxyparse.pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/auto/share/dist/Analizo/README -Installing /build/analizo-1.25.4/debian/analizo/usr/share/perl5/auto/share/dist/Analizo/bash-completion/analizo +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::AfferentConnections.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::tree_evolution.3pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfPublicAttributes.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::AverageNumberOfParameters.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::GlobalMetric::ChangeCost.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::help.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::StructuralComplexity.3pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::graph.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::CouplingBetweenObjects.3pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::AverageCycloComplexity.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::ResponseForClass.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfAttributes.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfMethods.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::CouplingBetweenObjects.3pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::LackOfCohesionOfMethods.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::help.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::metrics_batch.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::metrics_history.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::AfferentConnections.3pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::AverageMethodLinesOfCode.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::StructuralComplexity.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfPublicMethods.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::files_graph.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::tree_evolution.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfAttributes.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfChildren.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::DepthOfInheritanceTree.3pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::LinesOfCode.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfMethods.3pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metrics.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::DepthOfInheritanceTree.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfChildren.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::ResponseForClass.3pm Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::metrics.3pm -Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::files_graph.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::GlobalMetric::ChangeCost.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::NumberOfPublicMethods.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Metric::AverageNumberOfParameters.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::metrics_history.3pm +Installing /build/analizo-1.25.4/debian/analizo/usr/share/man/man3/Analizo::Command::metrics_batch.3pm Installing /build/analizo-1.25.4/debian/analizo/usr/bin/analizo make[2]: Leaving directory '/build/analizo-1.25.4' rm -f -rv /build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test +removed '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo.pm' removed '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/BDD/Cucumber/Extension.pm' removed directory '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/BDD/Cucumber' removed directory '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/BDD' -removed '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/Class.pm' removed '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/Git.pm' +removed '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo/Class.pm' removed directory '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo' -removed '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test/Analizo.pm' removed directory '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/Test' rm -f -v /build/analizo-1.25.4/debian/analizo/usr/share/perl5/profile.pl removed '/build/analizo-1.25.4/debian/analizo/usr/share/perl5/profile.pl' @@ -5320,12 +5363,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/18998/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/18998/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/18176 and its subdirectories -I: Current time: Sun Jun 4 18:03:09 -12 2023 -I: pbuilder-time-stamp: 1685944989 +I: removing directory /srv/workspace/pbuilder/18998 and its subdirectories +I: Current time: Mon Jun 5 20:19:26 +14 2023 +I: pbuilder-time-stamp: 1685945966