#!/usr/bin/perl # (c)2003-2008 Broadcom Corporation # # This program is the proprietary software of Broadcom Corporation and/or its licensors, # and may only be used, duplicated, modified or distributed pursuant to the terms and # conditions of a separate, written license agreement executed between you and Broadcom # (an "Authorized License"). Except as set forth in an Authorized License, Broadcom grants # no license (express or implied), right to use, or waiver of any kind with respect to the # Software, and Broadcom expressly reserves all rights in and to the Software and all # intellectual property rights therein. IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU # HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY # NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE. # # Except as expressly set forth in the Authorized License, # # 1. This program, including its structure, sequence and organization, constitutes the valuable trade # secrets of Broadcom, and you shall use all reasonable efforts to protect the confidentiality thereof, # and to use this information only in connection with your use of Broadcom integrated circuit products. # # 2. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" # AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR # WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO # THE SOFTWARE. BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES # OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, # LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION # OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF # USE OR PERFORMANCE OF THE SOFTWARE. # # 3. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ITS # LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR # EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO YOUR # USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF # THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT # ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE # LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF # ANY LIMITED REMEDY. # # $brcm_Workfile: nexus_commentcheck.pl $ # $brcm_Revision: 1 $ # $brcm_Date: 1/28/08 1:15p $ # # File Description: # # Revision History: # # $brcm_Log: /nexus/build/tools/common/nexus_commentcheck.pl $ # # 1 1/28/08 1:15p erickson # PR35457: new comment check tool # ############################################################################# use strict; my $totalerrors = 0; sub check_file { local *FILE; my $filename = shift; my $line; my $linenum = 1; open FILE, $filename; my $comment_line = 0; my $in_summary = 0; my $in_description = 0; foreach $line () { if ($comment_line) { if ($line =~ /\*\//) { $comment_line = 0; $in_summary = 0; $in_description = 0; } else { if ($line =~ /^Summary:/) { $in_summary = 1; if ($comment_line != 1) { print "ERROR: Summary: in invalid location at line $linenum\n"; $totalerrors++; } } elsif ($line =~ /^Description:/) { $in_description = 1; if ($in_summary) { print "ERROR: No blank line between Summary: and Description: at line $linenum\n"; $totalerrors++; } } elsif ($line =~ /^See Also:/) { if (!$in_description) { print "ERROR: See Also: must be in Description: at line $linenum\n"; $totalerrors++; } } elsif ($line =~ /^\s*$/) { $in_summary = 0; } if ($comment_line == 1 && !$in_summary) { print "ERROR: Missing Summary: on line $linenum\n"; $totalerrors++; } $comment_line++; } } elsif ($line =~ /^\/\*=/) { # module overview } elsif ($line =~ /^\/\*/) { if ($linenum == 1) { # standard header } else { $comment_line = 1; } } $linenum++; } } ############### # main ############### print "Nexus Comment Check\n"; print "Revision: 1/23/2008\n"; my $file; if ($#ARGV == -1) { print "Usage: nexus_commentcheck.pl file1.h file2.h ...\n"; exit; } for $file (@ARGV) { print "Checking $file\n"; print "------------------------------------------\n"; check_file $file; print "------------------------------------------\n"; } print "Total errors: $totalerrors\n"; $totalerrors;