linux/scripts/checkdeclares.pl
<<
>>
Prefs
   1#!/usr/bin/env perl
   2# SPDX-License-Identifier: GPL-2.0
   3#
   4# checkdeclares: find struct declared more than once
   5#
   6# Copyright 2021 Wan Jiabing<wanjiabing@vivo.com>
   7# Inspired by checkincludes.pl
   8#
   9# This script checks for duplicate struct declares.
  10# Note that this will not take into consideration macros so
  11# you should run this only if you know you do have real dups
  12# and do not have them under #ifdef's.
  13# You could also just review the results.
  14
  15use strict;
  16
  17sub usage {
  18        print "Usage: checkdeclares.pl file1.h ...\n";
  19        print "Warns of struct declaration duplicates\n";
  20        exit 1;
  21}
  22
  23if ($#ARGV < 0) {
  24        usage();
  25}
  26
  27my $dup_counter = 0;
  28
  29foreach my $file (@ARGV) {
  30        open(my $f, '<', $file)
  31            or die "Cannot open $file: $!.\n";
  32
  33        my %declaredstructs = ();
  34
  35        while (<$f>) {
  36                if (m/^\s*struct\s*(\w*);$/o) {
  37                        ++$declaredstructs{$1};
  38                }
  39        }
  40
  41        close($f);
  42
  43        foreach my $structname (keys %declaredstructs) {
  44                if ($declaredstructs{$structname} > 1) {
  45                        print "$file: struct $structname is declared more than once.\n";
  46                        ++$dup_counter;
  47                }
  48        }
  49}
  50
  51if ($dup_counter == 0) {
  52        print "No duplicate struct declares found.\n";
  53}
  54