File:  [Coherent Logic Development] / freem / scripts / fmd-lint
Revision 1.4: download - view: text, annotated - select for diffs
Tue Apr 15 14:39:06 2025 UTC (7 weeks, 4 days ago) by snw
Branches: MAIN
CVS tags: HEAD
Further improvements to logging

#!/usr/bin/env bash

#
#   $Id: fmd-lint,v 1.4 2025/04/15 14:39:06 snw Exp $
#    Run cppcheck on FreeM
#
#  
#   Author: Serena Willis <snw@coherent-logic.com>
#    Copyright (C) 2025 Coherent Logic Development LLC
#
#
#   This file is part of FreeM.
#
#   FreeM is free software: you can redistribute it and/or modify
#   it under the terms of the GNU Affero Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   FreeM is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU Affero Public License for more details.
#
#   You should have received a copy of the GNU Affero Public License
#   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
#
#   $Log: fmd-lint,v $
#   Revision 1.4  2025/04/15 14:39:06  snw
#   Further improvements to logging
#
#   Revision 1.3  2025/04/10 01:24:38  snw
#   Remove C++ style comments
#
#   Revision 1.2  2025/04/09 19:52:02  snw
#   Eliminate as many warnings as possible while building with -Wall
#
#   Revision 1.1  2025/04/09 15:47:36  snw
#   Add fmd lint command
#
#
# SPDX-FileCopyrightText:  (C) 2025 Coherent Logic Development LLC
# SPDX-License-Identifier: AGPL-3.0-or-later
#

PGM=$(basename $0)
SCRIPT_DIR=$(dirname "$0")

source "${SCRIPT_DIR}/_fmd_common.bash"

function usage() {
    echo
    echo "Runs static code analysis on FreeM code"
    echo    
    echo "usage:  "
    echo
    echo "  fmd lint"
    echo
    exit 0
}

if [[ $1 == "help" ]]
then
    usage
fi

if [[ $# == 0 ]]
then
    echo "lint:  must be run from 'fmd lint'"
    exit 1
fi

FMD=$1
REPORTFILE="freem_lint_${_fmd_freem_version}.log"

echo -n "${PGM}:  linting src/*.[ch] to ${REPORTFILE} (this may take awhile)... "
cppcheck --language=c --std=c99 --template=gcc --suppress=missingIncludeSystem --enable=all --check-level=exhaustive --quiet --force --check-level=exhaustive --enable=all --inconclusive src/*.[ch] &> "${REPORTFILE}"
if [[ $? == 0 ]]
then
    echo "[OK]"
else
    echo "[FAIL]"
fi


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>