53 lines · 1.1 KB · Perl
RawDownload
#!/usr/bin/env perl# SPDX-License-Identifier: GPL-2.0## checkdeclares: find struct declared more than once## Copyright 2021 Wan Jiabing<wanjiabing@vivo.com># Inspired by checkincludes.pl## This script checks for duplicate struct declares.# Note that this will not take into consideration macros so# you should run this only if you know you do have real dups# and do not have them under #ifdef's.# You could also just review the results. use strict; sub usage {	print "Usage: checkdeclares.pl file1.h ...\n";	print "Warns of struct declaration duplicates\n";	exit 1;} if ($#ARGV < 0) {	usage();} my $dup_counter = 0; foreach my $file (@ARGV) {	open(my $f, '<', $file)	    or die "Cannot open $file: $!.\n"; 	my %declaredstructs = (); 	while (<$f>) {		if (m/^\s*struct\s*(\w*);$/o) {			++$declaredstructs{$1};		}	} 	close($f); 	foreach my $structname (keys %declaredstructs) {		if ($declaredstructs{$structname} > 1) {			print "$file: struct $structname is declared more than once.\n";			++$dup_counter;		}	}} if ($dup_counter == 0) {	print "No duplicate struct declares found.\n";}