summaryrefslogtreecommitdiff
path: root/tools/checkhf.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/checkhf.pl')
-rwxr-xr-xtools/checkhf.pl30
1 files changed, 21 insertions, 9 deletions
diff --git a/tools/checkhf.pl b/tools/checkhf.pl
index 93bcb316a5..5059374474 100755
--- a/tools/checkhf.pl
+++ b/tools/checkhf.pl
@@ -235,6 +235,18 @@ sub remove_blank_lines {
return;
}
+sub get_quoted_str_regex {
+ # A regex which matches double-quoted strings.
+ # 's' modifier added so that strings containing a 'line continuation'
+ # ( \ followed by a new-line) will match.
+ my $double_quoted_str = qr{ (?: ["] (?: \\. | [^\"\\\n])* ["]) }xmso;
+
+ # A regex which matches single-quoted strings.
+ my $single_quoted_str = qr{ (?: ['] (?: \\. | [^\'\\\n])* [']) }xmso;
+
+ return qr{ $double_quoted_str | $single_quoted_str }xmso;
+}
+
# ------------
# action: remove comments from input string
# arg: code_ref, filename
@@ -250,6 +262,13 @@ sub remove_comments {
${$code_ref} =~ s{ $c_comment_regex } {}xmsog;
+ # Remove single-line C++-style comments. Be careful not to break up strings
+ # like "coap://", so match double quoted strings, single quoted characters,
+ # division operator and other characters before the actual "//" comment.
+ my $quoted_str = get_quoted_str_regex();
+ my $cpp_comment_regex = qr{ ^((?: $quoted_str | /(?!/) | [^'"/\n] )*) // .*$ }xm;
+ ${$code_ref} =~ s{ $cpp_comment_regex } { $1 }xmg;
+
($debug == 1) && print "==> After Remove Comments: code: [$filename]\n${$code_ref}\n===<\n";
return;
@@ -262,15 +281,8 @@ sub remove_comments {
sub remove_quoted_strings {
my ($code_ref, $filename) = @_;
- # A regex which matches double-quoted strings.
- # 's' modifier added so that strings containing a 'line continuation'
- # ( \ followed by a new-line) will match.
- my $double_quoted_str = qr{ (?: ["] (?: \\. | [^\"\\])* ["]) }xmso;
-
- # A regex which matches single-quoted strings.
- my $single_quoted_str = qr{ (?: ['] (?: \\. | [^\'\\])* [']) }xmso;
-
- ${$code_ref} =~ s{ $double_quoted_str | $single_quoted_str } {}xmsog;
+ my $quoted_str = get_quoted_str_regex();
+ ${$code_ref} =~ s{ $quoted_str } {}xmsog;
($debug == 1) && print "==> After Remove quoted strings: code: [$filename]\n${$code_ref}\n===<\n";