Blame build-aux/pmccabe2html

Packit Service 4684c1
# pmccabe2html - AWK script to convert pmccabe output to html       -*- awk -*-
Packit Service 4684c1
Packit Service 4684c1
# Copyright (C) 2007-2020 Free Software Foundation, Inc.
Packit Service 4684c1
Packit Service 4684c1
# This program is free software: you can redistribute it and/or modify
Packit Service 4684c1
# it under the terms of the GNU General Public License as published by
Packit Service 4684c1
# the Free Software Foundation, either version 3 of the License, or
Packit Service 4684c1
# (at your option) any later version.
Packit Service 4684c1
#
Packit Service 4684c1
# This program is distributed in the hope that it will be useful,
Packit Service 4684c1
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 4684c1
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 4684c1
# GNU General Public License for more details.
Packit Service 4684c1
#
Packit Service 4684c1
# You should have received a copy of the GNU General Public License
Packit Service 4684c1
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
Packit Service 4684c1
Packit Service 4684c1
# Written by Jose E. Marchesi <jemarch@gnu.org>.
Packit Service 4684c1
# Adapted for gnulib by Simon Josefsson <simon@josefsson.org>.
Packit Service 4684c1
# Added support for C++ by Giuseppe Scrivano <gscrivano@gnu.org>.
Packit Service 4684c1
Packit Service 4684c1
# Typical Invocation is from a Makefile.am:
Packit Service 4684c1
#
Packit Service 4684c1
# CYCLO_SOURCES = ${top_srcdir}/src/*.[ch]
Packit Service 4684c1
#
Packit Service 4684c1
# cyclo-$(PACKAGE).html: $(CYCLO_SOURCES)
Packit Service 4684c1
# 	$(PMCCABE) $(CYCLO_SOURCES) \
Packit Service 4684c1
# 		| sort -nr \
Packit Service 4684c1
# 		| $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \
Packit Service 4684c1
# 			-v lang=html -v name="$(PACKAGE_NAME)" \
Packit Service 4684c1
# 			-v vcurl="https://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=%FILENAME%;hb=HEAD" \
Packit Service 4684c1
# 			-v url="https://www.gnu.org/software/$(PACKAGE)/" \
Packit Service 4684c1
# 			-v css=${top_srcdir}/build-aux/pmccabe.css \
Packit Service 4684c1
# 			-v cut_dir=${top_srcdir}/ \
Packit Service 4684c1
# 			> $@-tmp
Packit Service 4684c1
# 	mv $@-tmp $@
Packit Service 4684c1
#
Packit Service 4684c1
# The variables available are:
Packit Service 4684c1
#   lang     output language, either 'html' or 'wiki'
Packit Service 4684c1
#   name     project name
Packit Service 4684c1
#   url      link to project's home page
Packit Service 4684c1
#   vcurl    URL to version controlled source code browser,
Packit Service 4684c1
#            a %FILENAME% in the string is replaced with the relative
Packit Service 4684c1
#            source filename
Packit Service 4684c1
#   css      CSS stylesheet filename, included verbatim in HTML output
Packit Service 4684c1
#   css_url  link to CSS stylesheet, an URL
Packit Service 4684c1
Packit Service 4684c1
# Prologue & configuration
Packit Service 4684c1
BEGIN {
Packit Service 4684c1
    # Portable lookup of present time.
Packit Service 4684c1
    "date +%s" | getline epoch_time
Packit Service 4684c1
    "date" | getline chronos_time
Packit Service 4684c1
Packit Service 4684c1
    section_global_stats_p = 1
Packit Service 4684c1
    section_function_cyclo_p = 1
Packit Service 4684c1
Packit Service 4684c1
    # "html" or "wiki"
Packit Service 4684c1
    package_name = name
Packit Service 4684c1
    output_lang = lang
Packit Service 4684c1
Packit Service 4684c1
    # General Options
Packit Service 4684c1
    cyclo_simple_max = 10
Packit Service 4684c1
    cyclo_moderate_max = 20
Packit Service 4684c1
    cyclo_high_max = 50
Packit Service 4684c1
    source_file_link_tmpl = vcurl
Packit Service 4684c1
Packit Service 4684c1
    # HTML options
Packit Service 4684c1
    if (url != "")
Packit Service 4684c1
    {
Packit Service 4684c1
	html_prolog = "Back to " package_name " Homepage

"
Packit Service 4684c1
    }
Packit Service 4684c1
    html_epilog = "
\
Packit Service 4684c1
Copyright (c) 2007, 2008 Free Software Foundation, Inc."
Packit Service 4684c1
    html_doctype = "
Packit Service 4684c1
\"http://www.w3.org/TR/html401/loose.dtd\">"
Packit Service 4684c1
    html_comment = ""
Packit Service 4684c1
    html_title = "Cyclomatic Complexity report for " package_name
Packit Service 4684c1
Packit Service 4684c1
    # Wiki options
Packit Service 4684c1
    wiki_prolog = "{{Note|This page has been automatically generated}}"
Packit Service 4684c1
    wiki_epilog = ""
Packit Service 4684c1
Packit Service 4684c1
    # Internal variables
Packit Service 4684c1
    nfuncs = 0;
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
# Functions
Packit Service 4684c1
Packit Service 4684c1
function build_stats()
Packit Service 4684c1
{
Packit Service 4684c1
    # Maximum modified cyclo
Packit Service 4684c1
    for (fcn in mcyclo)
Packit Service 4684c1
    {
Packit Service 4684c1
        num_of_functions++
Packit Service 4684c1
        if (mcyclo[fcn] > max_mcyclo)
Packit Service 4684c1
        {
Packit Service 4684c1
            max_mcyclo = mcyclo[fcn]
Packit Service 4684c1
        }
Packit Service 4684c1
Packit Service 4684c1
        if (mcyclo[fcn] > cyclo_high_max)
Packit Service 4684c1
        {
Packit Service 4684c1
            num_of_untestable_functions++
Packit Service 4684c1
        }
Packit Service 4684c1
        else if (mcyclo[fcn] > cyclo_moderate_max)
Packit Service 4684c1
        {
Packit Service 4684c1
            num_of_high_functions++
Packit Service 4684c1
        }
Packit Service 4684c1
        else if (mcyclo[fcn] > cyclo_simple_max)
Packit Service 4684c1
        {
Packit Service 4684c1
            num_of_moderate_functions++
Packit Service 4684c1
        }
Packit Service 4684c1
        else
Packit Service 4684c1
        {
Packit Service 4684c1
            num_of_simple_functions++
Packit Service 4684c1
        }
Packit Service 4684c1
    }
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function html_fnc_table_complete (caption)
Packit Service 4684c1
{
Packit Service 4684c1
    html_fnc_table(caption, 1, 1, 0, 1, 1, 0, 1)
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function html_fnc_table_abbrev (caption)
Packit Service 4684c1
{
Packit Service 4684c1
    html_fnc_table(caption, 1, 1, 0, 0, 1, 0, 0)
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
function html_fnc_table (caption,
Packit Service 4684c1
                         fname_p,
Packit Service 4684c1
                         mcyclo_p,
Packit Service 4684c1
                         cyclo_p,
Packit Service 4684c1
                         num_statements_p,
Packit Service 4684c1
                         num_lines_p,
Packit Service 4684c1
                         first_line_p,
Packit Service 4684c1
                         file_p)
Packit Service 4684c1
{
Packit Service 4684c1
    print ""
Packit Service 4684c1
    if (caption != "")
Packit Service 4684c1
    {
Packit Service 4684c1
        print "<caption class=\"function_table_caption\">" caption "</caption>"
Packit Service 4684c1
    }
Packit Service 4684c1
    html_fnc_header(fname_p,
Packit Service 4684c1
                    mcyclo_p,
Packit Service 4684c1
                    cyclo_p,
Packit Service 4684c1
                    num_statements_p,
Packit Service 4684c1
                    num_lines_p,
Packit Service 4684c1
                    first_line_p,
Packit Service 4684c1
                    file_p)
Packit Service 4684c1
    for (nfnc = 1; nfnc <= nfuncs; nfnc++)
Packit Service 4684c1
    {
Packit Service 4684c1
        html_fnc(nfnc,
Packit Service 4684c1
                 fname_p,
Packit Service 4684c1
                 mcyclo_p,
Packit Service 4684c1
                 cyclo_p,
Packit Service 4684c1
                 num_statements_p,
Packit Service 4684c1
                 num_lines_p,
Packit Service 4684c1
                 first_line_p,
Packit Service 4684c1
                 file_p)
Packit Service 4684c1
    }
Packit Service 4684c1
    print ""
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function html_header ()
Packit Service 4684c1
{
Packit Service 4684c1
    print html_doctype
Packit Service 4684c1
    print "<html>"
Packit Service 4684c1
    print html_comment
Packit Service 4684c1
    print "<head>"
Packit Service 4684c1
    print "<title>" html_title "</title>"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "<meta name=\"description\" content=\"" html_title "\">"
Packit Service 4684c1
    print "<meta name=\"keywords\" content=\"" html_title "\">"
Packit Service 4684c1
    print "<meta name=\"resource-type\" content=\"document\">"
Packit Service 4684c1
    print "<meta name=\"distribution\" content=\"global\">"
Packit Service 4684c1
    print "<meta name=\"Generator\" content=\"pmccabe2html\">"
Packit Service 4684c1
    print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"
Packit Service 4684c1
    print "<script language=\"javascript\" type=\"text/javascript\">"
Packit Service 4684c1
    print "function show_hide(idCapa, idButton, fuerzaVisibilidad)\
Packit Service 4684c1
{\
Packit Service 4684c1
        var button = document.getElementById(idButton);\
Packit Service 4684c1
	var capa = document.getElementById(idCapa);\
Packit Service 4684c1
	if (capa)\
Packit Service 4684c1
	{\
Packit Service 4684c1
		if (fuerzaVisibilidad && fuerzaVisibilidad!=\"\") {\
Packit Service 4684c1
			if (fuerzaVisibilidad==\"visible\") capa.style.display=\"\";\
Packit Service 4684c1
			else capa.style.display=\"none\";\
Packit Service 4684c1
		}\
Packit Service 4684c1
		else\
Packit Service 4684c1
		{\
Packit Service 4684c1
			if (capa.style.display == \"none\") {\
Packit Service 4684c1
				capa.style.display = \"\";\
Packit Service 4684c1
                                button.innerHTML = \"↑\";\
Packit Service 4684c1
			} else {\
Packit Service 4684c1
				capa.style.display = \"none\";\
Packit Service 4684c1
                                button.innerHTML = \"↓\";     \
Packit Service 4684c1
			}\
Packit Service 4684c1
		}\
Packit Service 4684c1
	}\
Packit Service 4684c1
}"
Packit Service 4684c1
    print "</script>"
Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
    if (css_url != "")
Packit Service 4684c1
    {
Packit Service 4684c1
        print "<link rel=\"stylesheet\" href=\"" css_url "\" type =\"text/css\" media=\"screen\"/>"
Packit Service 4684c1
    }
Packit Service 4684c1
    if (css != "")
Packit Service 4684c1
    {
Packit Service 4684c1
        print "<style type =\"text/css\" media=\"screen\">"
Packit Service 4684c1
	print "
Packit Service 4684c1
        while ((getline cssline < css) > 0)
Packit Service 4684c1
        {
Packit Service 4684c1
	    print cssline
Packit Service 4684c1
	}
Packit Service 4684c1
        print "-->"
Packit Service 4684c1
	print "</style>"
Packit Service 4684c1
	close(css)
Packit Service 4684c1
    }
Packit Service 4684c1
    print "</head>"
Packit Service 4684c1
    print "
Packit Service 4684c1
vlink=\"#800080\" alink=\"#FF0000\">"
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function html_footer ()
Packit Service 4684c1
{
Packit Service 4684c1
    print "</body>"
Packit Service 4684c1
    print "</html>"
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function html_fnc_header (fname_p,
Packit Service 4684c1
                          mcyclo_p,
Packit Service 4684c1
                          cyclo_p,
Packit Service 4684c1
                          num_statements_p,
Packit Service 4684c1
                          num_lines_p,
Packit Service 4684c1
                          first_line_p,
Packit Service 4684c1
                          file_p)
Packit Service 4684c1
{
Packit Service 4684c1
    print ""
Packit Service 4684c1
    if (fname_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Function name
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print ""
Packit Service 4684c1
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print "Function Name"
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (mcyclo_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Modified cyclo
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print "Modified Cyclo"
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (cyclo_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Cyclo
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print "Cyclomatic"
Packit Service 4684c1
        print "
"
Packit Service 4684c1
        print "Complexity"
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (num_statements_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print "Number of"
Packit Service 4684c1
        print "
"
Packit Service 4684c1
        print "Statements"
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (num_lines_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print "Number of"
Packit Service 4684c1
        print "
"
Packit Service 4684c1
        print "Lines"
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (first_line_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print "First Line"
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (file_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print "Source File"
Packit Service 4684c1
        print ""
Packit Service 4684c1
Packit Service 4684c1
    }
Packit Service 4684c1
    print ""
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function html_fnc (nfun,
Packit Service 4684c1
                   fname_p,
Packit Service 4684c1
                   mcyclo_p,
Packit Service 4684c1
                   cyclo_p,
Packit Service 4684c1
                   num_statements_p,
Packit Service 4684c1
                   num_lines_p,
Packit Service 4684c1
                   first_line_p,
Packit Service 4684c1
                   file_p)
Packit Service 4684c1
{
Packit Service 4684c1
    fname = fnames[nfun]
Packit Service 4684c1
Packit Service 4684c1
    # Function name
Packit Service 4684c1
    trclass = "function_entry_simple"
Packit Service 4684c1
    if (mcyclo[nfun] > cyclo_high_max)
Packit Service 4684c1
    {
Packit Service 4684c1
        trclass="function_entry_untestable"
Packit Service 4684c1
    }
Packit Service 4684c1
    else if (mcyclo[nfun] > cyclo_moderate_max)
Packit Service 4684c1
    {
Packit Service 4684c1
        trclass="function_entry_high"
Packit Service 4684c1
    }
Packit Service 4684c1
    else if (mcyclo[nfun] > cyclo_simple_max)
Packit Service 4684c1
    {
Packit Service 4684c1
        trclass="function_entry_moderate"
Packit Service 4684c1
    }
Packit Service 4684c1
Packit Service 4684c1
    print ""
Packit Service 4684c1
    if (fname_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print ""
Packit Service 4684c1
        if (file_p && mcyclo[nfun] > cyclo_simple_max)
Packit Service 4684c1
        {
Packit Service 4684c1
            print "\
Packit Service 4684c1
"
Packit Service 4684c1
        }
Packit Service 4684c1
        else
Packit Service 4684c1
        {
Packit Service 4684c1
            print " "
Packit Service 4684c1
        }
Packit Service 4684c1
        print ""
Packit Service 4684c1
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print fname
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (mcyclo_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Modified cyclo
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print mcyclo[nfun]
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (cyclo_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Cyclo
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print cyclo[nfun]
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (num_statements_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Number of statements
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print num_statements[nfun]
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (num_lines_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Number of lines
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print num_lines[nfun]
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (first_line_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # First line
Packit Service 4684c1
        print ""
Packit Service 4684c1
        print first_line[nfun]
Packit Service 4684c1
        print ""
Packit Service 4684c1
    }
Packit Service 4684c1
    if (file_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        href = ""
Packit Service 4684c1
        if (source_file_link_tmpl != "")
Packit Service 4684c1
        {
Packit Service 4684c1
            # Get href target
Packit Service 4684c1
            href = source_file_link_tmpl
Packit Service 4684c1
            sub(/%FILENAME%/, file[nfun], href)
Packit Service 4684c1
        }
Packit Service 4684c1
Packit Service 4684c1
        # Source file
Packit Service 4684c1
        print ""
Packit Service 4684c1
        if (href != "")
Packit Service 4684c1
        {
Packit Service 4684c1
            print "" file[nfun] ""
Packit Service 4684c1
        }
Packit Service 4684c1
        else
Packit Service 4684c1
        {
Packit Service 4684c1
            print file[nfun]
Packit Service 4684c1
        }
Packit Service 4684c1
Packit Service 4684c1
        print ""
Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
        print ""
Packit Service 4684c1
Packit Service 4684c1
        if (mcyclo[nfun] > cyclo_simple_max)
Packit Service 4684c1
        {
Packit Service 4684c1
            print ""
Packit Service 4684c1
Packit Service 4684c1
            num_columns = 1;
Packit Service 4684c1
            if (fname_p) { num_columns++ }
Packit Service 4684c1
            if (mcyclo_p) { num_columns++ }
Packit Service 4684c1
            if (cyclo_p) { num_columns++ }
Packit Service 4684c1
            if (num_statements_p) { num_columns++ }
Packit Service 4684c1
            if (num_lines_p) { num_columns++ }
Packit Service 4684c1
            if (first_line_p) { num_columns++ }
Packit Service 4684c1
            if (file_p) { num_columns++ }
Packit Service 4684c1
Packit Service 4684c1
            print ""
Packit Service 4684c1
            print "
"
Packit Service 4684c1
            print "
"
Packit Service 4684c1
Packit Service 4684c1
            while ((getline codeline < (fname nfun "_fn.txt")) > 0)
Packit Service 4684c1
            {
Packit Service 4684c1
                gsub(/&/, "\\&", codeline)	# Must come first.
Packit Service 4684c1
                gsub(/</, "\\<", codeline)
Packit Service 4684c1
                gsub(/>/, "\\>", codeline)
Packit Service 4684c1
Packit Service 4684c1
                print codeline
Packit Service 4684c1
            }
Packit Service 4684c1
            close(fname nfun "_fn.txt")
Packit Service 4684c1
            system("rm " "'" fname "'" nfun "_fn.txt")
Packit Service 4684c1
            print ""
Packit Service 4684c1
            print ""
Packit Service 4684c1
            print ""
Packit Service 4684c1
            print ""
Packit Service 4684c1
        }
Packit Service 4684c1
Packit Service 4684c1
    }
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function html_global_stats ()
Packit Service 4684c1
{
Packit Service 4684c1
    print "
Summary
"
Packit Service 4684c1
Packit Service 4684c1
    print ""
Packit Service 4684c1
    # Total number of functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Total number of functions"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print num_of_functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    # Number of simple functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Number of low risk functions"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print num_of_simple_functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    # Number of moderate functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Number of moderate risk functions"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print num_of_moderate_functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    # Number of high functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Number of high risk functions"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print num_of_high_functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    # Number of untestable functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Number of untestable functions"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print num_of_untestable_functions
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "
"
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function html_function_cyclo ()
Packit Service 4684c1
{
Packit Service 4684c1
    print "
Details for all functions
"
Packit Service 4684c1
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print " "
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Cyclomatic Complexity"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Risk Evaluation"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    # Simple
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print " "
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "0 - " cyclo_simple_max
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Simple module, without much risk"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    # Moderate
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print " "
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print cyclo_simple_max + 1 " - " cyclo_moderate_max
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "More complex module, moderate risk"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    # High
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print " "
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print cyclo_moderate_max + 1 " - " cyclo_high_max
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Complex module, high risk"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    # Untestable
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print " "
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "greater than " cyclo_high_max
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "Untestable module, very high risk"
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print "
"
Packit Service 4684c1
    html_fnc_table_complete("")
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function wiki_global_stats ()
Packit Service 4684c1
{
Packit Service 4684c1
    print "{| class=\"cyclo_summary_table\""
Packit Service 4684c1
    # Total number of functions
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_summary_header_entry\" | Total number of functions"
Packit Service 4684c1
    print "| class=\"cyclo_summary_number_entry\" |" num_of_functions
Packit Service 4684c1
    # Number of simple functions
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_summary_header_entry\" | Number of low risk functions"
Packit Service 4684c1
    print "| class=\"cyclo_summary_number_entry\" |" num_of_simple_functions
Packit Service 4684c1
    # Number of moderate functions
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_summary_header_entry\" | Number of moderate risk functions"
Packit Service 4684c1
    print "| class=\"cyclo_summary_number_entry\" |" num_of_moderate_functions
Packit Service 4684c1
    # Number of high functions
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_summary_header_entry\" | Number of high risk functions"
Packit Service 4684c1
    print "| class=\"cyclo_summary_number_entry\" |" num_of_high_functions
Packit Service 4684c1
    # Number of untestable functions
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_summary_header_entry\" | Number of untestable functions"
Packit Service 4684c1
    print "| class=\"cyclo_summary_number_entry\" |" num_of_untestable_functions
Packit Service 4684c1
    print "|}"
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function wiki_function_cyclo ()
Packit Service 4684c1
{
Packit Service 4684c1
    print "==Details for all functions=="
Packit Service 4684c1
Packit Service 4684c1
    print "Used ranges:"
Packit Service 4684c1
Packit Service 4684c1
    print "{| class =\"cyclo_ranges_table\""
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_ranges_header_entry\" | "
Packit Service 4684c1
    print "| class=\"cyclo_ranges_header_entry\" | Cyclomatic Complexity"
Packit Service 4684c1
    print "| class=\"cyclo_ranges_header_entry\" | Risk Evaluation"
Packit Service 4684c1
    # Simple
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry_simple\" | "
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry\" | 0 - " cyclo_simple_max
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry\" | Simple module, without much risk"
Packit Service 4684c1
    # Moderate
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry_moderate\" | "
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry\" |" cyclo_simple_max + 1 " - " cyclo_moderate_max
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry\" | More complex module, moderate risk"
Packit Service 4684c1
    # High
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry_high\" | "
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry\" |" cyclo_moderate_max + 1 " - " cyclo_high_max
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry\" | Complex module, high risk"
Packit Service 4684c1
    # Untestable
Packit Service 4684c1
    print "|-"
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry_untestable\" | "
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry\" | greater than " cyclo_high_max
Packit Service 4684c1
    print "| class=\"cyclo_ranges_entry\" | Untestable module, very high risk"
Packit Service 4684c1
    print "|}"
Packit Service 4684c1
Packit Service 4684c1
    print ""
Packit Service 4684c1
    print ""
Packit Service 4684c1
    wiki_fnc_table_complete("")
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function wiki_fnc_table_complete (caption)
Packit Service 4684c1
{
Packit Service 4684c1
    wiki_fnc_table(caption, 1, 1, 0, 1, 1, 0, 1)
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function wiki_fnc_table_abbrev (caption)
Packit Service 4684c1
{
Packit Service 4684c1
    wiki_fnc_table(caption, 1, 0, 0, 0, 0, 0, 0)
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function wiki_fnc_table (caption,
Packit Service 4684c1
                         fname_p,
Packit Service 4684c1
                         mcyclo_p,
Packit Service 4684c1
                         cyclo_p,
Packit Service 4684c1
                         num_statements_p,
Packit Service 4684c1
                         num_lines_p,
Packit Service 4684c1
                         first_line_p,
Packit Service 4684c1
                         file_p)
Packit Service 4684c1
{
Packit Service 4684c1
    print "{| width=\"90%\" class=\"cyclo_function_table\" cellpadding=\"0\" cellspacing=\"0\">"
Packit Service 4684c1
    if (caption != "")
Packit Service 4684c1
    {
Packit Service 4684c1
        print "|+" caption
Packit Service 4684c1
    }
Packit Service 4684c1
    wiki_fnc_header(fname_p,
Packit Service 4684c1
                    mcyclo_p,
Packit Service 4684c1
                    cyclo_p,
Packit Service 4684c1
                    num_statements_p,
Packit Service 4684c1
                    num_lines_p,
Packit Service 4684c1
                    first_line_p,
Packit Service 4684c1
                    file_p)
Packit Service 4684c1
    for (nfnc = 1; nfnc <= nfuncs; nfnc++)
Packit Service 4684c1
    {
Packit Service 4684c1
        wiki_fnc(nfnc,
Packit Service 4684c1
                 fname_p,
Packit Service 4684c1
                 mcyclo_p,
Packit Service 4684c1
                 cyclo_p,
Packit Service 4684c1
                 num_statements_p,
Packit Service 4684c1
                 num_lines_p,
Packit Service 4684c1
                 first_line_p,
Packit Service 4684c1
                 file_p)
Packit Service 4684c1
    }
Packit Service 4684c1
    print "|}"
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function wiki_fnc_header (fname_p,
Packit Service 4684c1
                          mcyclo_p,
Packit Service 4684c1
                          cyclo_p,
Packit Service 4684c1
                          num_statements_p,
Packit Service 4684c1
                          num_lines_p,
Packit Service 4684c1
                          first_line_p,
Packit Service 4684c1
                          file_p)
Packit Service 4684c1
{
Packit Service 4684c1
    if (fname_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Function name
Packit Service 4684c1
        print "! class=\"cyclo_function_table_header_entry\" | Function Name"
Packit Service 4684c1
    }
Packit Service 4684c1
    if (mcyclo_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Modified cyclo
Packit Service 4684c1
        print "! class=\"cyclo_function_table_header_entry\" | Modified Cyclo"
Packit Service 4684c1
    }
Packit Service 4684c1
    if (cyclo_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Cyclo
Packit Service 4684c1
        print "! class=\"cyclo_function_table_header_entry\" | Cyclomatic Complexity"
Packit Service 4684c1
    }
Packit Service 4684c1
    if (num_statements_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print "! class=\"cyclo_function_table_header_entry\" | Number of Statements"
Packit Service 4684c1
    }
Packit Service 4684c1
    if (num_lines_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print "! class=\"cyclo_function_table_header_entry\" | Number of Lines"
Packit Service 4684c1
    }
Packit Service 4684c1
    if (first_line_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print "! class=\"cyclo_function_table_header_entry\" | First Line"
Packit Service 4684c1
    }
Packit Service 4684c1
    if (file_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print "! class=\"cyclo_function_table_header_entry\" | Source File"
Packit Service 4684c1
    }
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
function wiki_fnc (nfnc,
Packit Service 4684c1
                   fname_p,
Packit Service 4684c1
                   mcyclo_p,
Packit Service 4684c1
                   cyclo_p,
Packit Service 4684c1
                   num_statements_p,
Packit Service 4684c1
                   num_lines_p,
Packit Service 4684c1
                   first_line_p,
Packit Service 4684c1
                   file_p)
Packit Service 4684c1
{
Packit Service 4684c1
   fname = fnames[nfnc]
Packit Service 4684c1
Packit Service 4684c1
    # Function name
Packit Service 4684c1
    trclass = "cyclo_function_entry_simple"
Packit Service 4684c1
    if (mcyclo[nfnc] > cyclo_high_max)
Packit Service 4684c1
    {
Packit Service 4684c1
        trclass="cyclo_function_entry_untestable"
Packit Service 4684c1
    }
Packit Service 4684c1
    else if (mcyclo[nfnc] > cyclo_moderate_max)
Packit Service 4684c1
    {
Packit Service 4684c1
        trclass="cyclo_function_entry_high"
Packit Service 4684c1
    }
Packit Service 4684c1
    else if (mcyclo[nfnc] > cyclo_simple_max)
Packit Service 4684c1
    {
Packit Service 4684c1
        trclass="cyclo_function_entry_moderate"
Packit Service 4684c1
    }
Packit Service 4684c1
Packit Service 4684c1
    print "|- class=\"" trclass "\""
Packit Service 4684c1
    if (fname_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        print "| class=\"cyclo_function_entry_name\" |" fname
Packit Service 4684c1
    }
Packit Service 4684c1
    if (mcyclo_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Modified cyclo
Packit Service 4684c1
        print "| class=\"cyclo_function_entry_cyclo\" |" mcyclo[nfnc]
Packit Service 4684c1
    }
Packit Service 4684c1
    if (cyclo_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Cyclo
Packit Service 4684c1
        print "| class=\"cyclo_function_entry_cyclo\" |" cyclo[nfnc]
Packit Service 4684c1
    }
Packit Service 4684c1
    if (num_statements_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Number of statements
Packit Service 4684c1
        print "| class=\"cyclo_function_entry_number\" |" num_statements[nfnc]
Packit Service 4684c1
    }
Packit Service 4684c1
    if (num_lines_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Number of lines
Packit Service 4684c1
        print "| class=\"cyclo_function_entry_number\" |" num_lines[nfnc]
Packit Service 4684c1
    }
Packit Service 4684c1
    if (first_line_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        # First line
Packit Service 4684c1
        print "| class=\"cyclo_function_entry_number\" |" first_line[nfnc]
Packit Service 4684c1
    }
Packit Service 4684c1
    if (file_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        href = ""
Packit Service 4684c1
        if (source_file_link_tmpl != "")
Packit Service 4684c1
        {
Packit Service 4684c1
            # Get href target
Packit Service 4684c1
            href = source_file_link_tmpl
Packit Service 4684c1
            sub(/%FILENAME%/, file[nfnc], href)
Packit Service 4684c1
        }
Packit Service 4684c1
Packit Service 4684c1
        # Source file
Packit Service 4684c1
        print "| class=\"cyclo_function_entry_filename\" |" \
Packit Service 4684c1
            ((href != "") ? "[" href " " file[nfnc] "]" : "[" file[nfnc] "]")
Packit Service 4684c1
    }
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
# Scan data from a line
Packit Service 4684c1
{
Packit Service 4684c1
    function_name = $7
Packit Service 4684c1
Packit Service 4684c1
    nfuncs++;
Packit Service 4684c1
    fnames[nfuncs] = function_name
Packit Service 4684c1
    mcyclo[nfuncs] = $1
Packit Service 4684c1
    cyclo[nfuncs] = $2
Packit Service 4684c1
    num_statements[nfuncs] = $3
Packit Service 4684c1
    first_line[nfuncs] = $4
Packit Service 4684c1
    num_lines[nfuncs] = $5
Packit Service 4684c1
Packit Service 4684c1
    # Build the filename from the file_spec ($6)
Packit Service 4684c1
    begin_util_path = index($6, cut_dir)
Packit Service 4684c1
    tmpfilename = substr($6, begin_util_path + length(cut_dir))
Packit Service 4684c1
    sub(/\([0-9]+\):/, "", tmpfilename)
Packit Service 4684c1
    file[nfuncs] = tmpfilename
Packit Service 4684c1
Packit Service 4684c1
    if (mcyclo[nfuncs] > cyclo_simple_max)
Packit Service 4684c1
    {
Packit Service 4684c1
        # Extract function contents to a fn_txt file
Packit Service 4684c1
        filepath = $6
Packit Service 4684c1
Packit Service 4684c1
        sub(/\([0-9]+\):/, "", filepath)
Packit Service 4684c1
        num_line = 0
Packit Service 4684c1
Packit Service 4684c1
        while ((getline codeline < filepath) > 0)
Packit Service 4684c1
        {
Packit Service 4684c1
            num_line++;
Packit Service 4684c1
            if ((num_line >= first_line[nfuncs]) &&
Packit Service 4684c1
                (num_line < first_line[nfuncs] + num_lines[nfuncs]))
Packit Service 4684c1
            {
Packit Service 4684c1
                print codeline > (function_name nfuncs "_fn.txt")
Packit Service 4684c1
            }
Packit Service 4684c1
        }
Packit Service 4684c1
        close (function_name nfuncs "_fn.txt")
Packit Service 4684c1
        close(filepath)
Packit Service 4684c1
    }
Packit Service 4684c1
Packit Service 4684c1
    # Initial values for statistics variables
Packit Service 4684c1
    num_of_functions = 0
Packit Service 4684c1
    max_mcyclo = 0
Packit Service 4684c1
    max_function_length = 0
Packit Service 4684c1
    num_of_simple_functions = 0
Packit Service 4684c1
    num_of_moderate_functions = 0
Packit Service 4684c1
    num_of_high_functions = 0
Packit Service 4684c1
    num_of_untestable_functions = 0
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
# Epilogue
Packit Service 4684c1
END {
Packit Service 4684c1
    # Print header (only for html)
Packit Service 4684c1
    if (output_lang == "html")
Packit Service 4684c1
    {
Packit Service 4684c1
        html_header()
Packit Service 4684c1
    }
Packit Service 4684c1
Packit Service 4684c1
    # Print prolog
Packit Service 4684c1
    if ((output_lang == "html") &&
Packit Service 4684c1
        (html_prolog != ""))
Packit Service 4684c1
    {
Packit Service 4684c1
        print html_prolog
Packit Service 4684c1
    }
Packit Service 4684c1
    if ((output_lang == "wiki") &&
Packit Service 4684c1
        (wiki_prolog != ""))
Packit Service 4684c1
    {
Packit Service 4684c1
        print wiki_prolog
Packit Service 4684c1
    }
Packit Service 4684c1
Packit Service 4684c1
    if (output_lang == "html")
Packit Service 4684c1
    {
Packit Service 4684c1
        print "
" package_name " Cyclomatic Complexity Report
"
Packit Service 4684c1
        print "

Report generated at: " chronos_time "

"
Packit Service 4684c1
    }
Packit Service 4684c1
    if (output_lang == "wiki")
Packit Service 4684c1
    {
Packit Service 4684c1
        print "==" package_name " Cyclomatic Complexity Report=="
Packit Service 4684c1
        print "Report generated at: '''" chronos_time "'''"
Packit Service 4684c1
    }
Packit Service 4684c1
Packit Service 4684c1
    if (section_global_stats_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        build_stats()
Packit Service 4684c1
Packit Service 4684c1
        if (output_lang == "html")
Packit Service 4684c1
        {
Packit Service 4684c1
            html_global_stats()
Packit Service 4684c1
        }
Packit Service 4684c1
        if (output_lang == "wiki")
Packit Service 4684c1
        {
Packit Service 4684c1
            wiki_global_stats()
Packit Service 4684c1
        }
Packit Service 4684c1
    }
Packit Service 4684c1
    if (section_function_cyclo_p)
Packit Service 4684c1
    {
Packit Service 4684c1
        if (output_lang == "html")
Packit Service 4684c1
        {
Packit Service 4684c1
            html_function_cyclo()
Packit Service 4684c1
        }
Packit Service 4684c1
        if (output_lang == "wiki")
Packit Service 4684c1
        {
Packit Service 4684c1
            wiki_function_cyclo()
Packit Service 4684c1
        }
Packit Service 4684c1
    }
Packit Service 4684c1
Packit Service 4684c1
    # Print epilog
Packit Service 4684c1
    if ((output_lang == "html") &&
Packit Service 4684c1
        (html_epilog != ""))
Packit Service 4684c1
    {
Packit Service 4684c1
        print html_epilog
Packit Service 4684c1
    }
Packit Service 4684c1
    if ((output_lang == "wiki") &&
Packit Service 4684c1
        (wiki_epilog != ""))
Packit Service 4684c1
    {
Packit Service 4684c1
        print wiki_epilog
Packit Service 4684c1
    }
Packit Service 4684c1
Packit Service 4684c1
    # Print footer (html only)
Packit Service 4684c1
    if (output_lang == "html")
Packit Service 4684c1
    {
Packit Service 4684c1
        html_footer()
Packit Service 4684c1
    }
Packit Service 4684c1
}
Packit Service 4684c1
Packit Service 4684c1
# End of pmccabe2html