blob: a749501594285615d8e2c7527960f84c1b966291 [file] [log] [blame]
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +02001#!/bin/sh
Simon Butcher71ebc582016-06-23 20:02:07 +01002#
3# This file is part of mbed TLS (https://tls.mbed.org)
4#
5# Copyright (c) 2015-2016, ARM Limited, All Rights Reserved
6#
7# Purpose
8#
9# This script confirms that the naming of all symbols and identifiers in mbed
10# TLS are consistent with the house style and are also self-consistent.
11#
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020012set -eu
13
Simon Butcher71ebc582016-06-23 20:02:07 +010014if grep --version|head -n1|grep GNU >/dev/null; then :; else
Ron Eldorbf007d22016-12-15 14:42:37 +020015 echo "This script requires GNU grep.">&2
Simon Butcher71ebc582016-06-23 20:02:07 +010016 exit 1
17fi
18
19printf "Analysing source code...\n"
20
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020021tests/scripts/list-macros.sh
22tests/scripts/list-enum-consts.pl
23tests/scripts/list-identifiers.sh
24tests/scripts/list-symbols.sh
25
26FAIL=0
27
Simon Butcher71ebc582016-06-23 20:02:07 +010028printf "\nExported symbols declared in header: "
Jarno Lamsa8557fc92019-04-26 16:22:10 +030029diff exported-symbols identifiers | sed -n -e 's/^< //p' > undeclared
30
31FILTERED=$( diff tests/scripts/whitelist undeclared | sed -n -e 's/^< //p')
32
33if [ "x$FILTERED" = "x" ]; then
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020034 echo "PASS"
35else
36 echo "FAIL"
Jarno Lamsa8557fc92019-04-26 16:22:10 +030037 echo "$FILTERED"
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020038 FAIL=1
39fi
40
41diff macros identifiers | sed -n -e 's/< //p' > actual-macros
42
43for THING in actual-macros enum-consts; do
44 printf "Names of $THING: "
45 test -r $THING
Simon Butcher3ad2efd2018-05-02 14:49:38 +010046 BAD=$( grep -v '^MBEDTLS_[0-9A-Z_]*[0-9A-Z]$' $THING || true )
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020047 if [ "x$BAD" = "x" ]; then
48 echo "PASS"
49 else
50 echo "FAIL"
51 echo "$BAD"
52 FAIL=1
53 fi
54done
55
56for THING in identifiers; do
57 printf "Names of $THING: "
58 test -r $THING
59 BAD=$( grep -v '^mbedtls_[0-9a-z_]*[0-9a-z]$' $THING || true )
60 if [ "x$BAD" = "x" ]; then
61 echo "PASS"
62 else
63 echo "FAIL"
64 echo "$BAD"
65 FAIL=1
66 fi
67done
68
Manuel Pégourié-Gonnardf9aae832015-04-09 12:20:53 +020069printf "Likely typos: "
70sort -u actual-macros enum-consts > _caps
71HEADERS=$( ls include/mbedtls/*.h | egrep -v 'compat-1\.3\.h' )
72NL='
73'
Manuel Pégourié-Gonnard6ad5d352015-05-28 15:08:28 +020074sed -n 's/MBED..._[A-Z0-9_]*/\'"$NL"'&\'"$NL"/gp \
Manuel Pégourié-Gonnardf9aae832015-04-09 12:20:53 +020075 $HEADERS library/*.c \
76 | grep MBEDTLS | sort -u > _MBEDTLS_XXX
77TYPOS=$( diff _caps _MBEDTLS_XXX | sed -n 's/^> //p' \
Manuel Pégourié-Gonnard32da9f62015-07-31 15:52:30 +020078 | egrep -v 'XXX|__|_$|^MBEDTLS_.*CONFIG_FILE$' || true )
Manuel Pégourié-Gonnardf9aae832015-04-09 12:20:53 +020079rm _MBEDTLS_XXX _caps
Manuel Pégourié-Gonnard9afdc832015-08-04 17:15:13 +020080if [ "x$TYPOS" = "x" ]; then
Manuel Pégourié-Gonnardf9aae832015-04-09 12:20:53 +020081 echo "PASS"
82else
83 echo "FAIL"
84 echo "$TYPOS"
85 FAIL=1
86fi
87
Simon Butcher71ebc582016-06-23 20:02:07 +010088printf "\nOverall: "
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020089if [ "$FAIL" -eq 0 ]; then
Jarno Lamsa8557fc92019-04-26 16:22:10 +030090 rm macros actual-macros enum-consts identifiers exported-symbols undeclared
Manuel Pégourié-Gonnarde137ea62015-04-09 10:47:44 +020091 echo "PASSED"
92 exit 0
93else
94 echo "FAILED"
95 exit 1
96fi