diff options
Diffstat (limited to 'ChibiOS_20.3.2/tools/style')
-rw-r--r-- | ChibiOS_20.3.2/tools/style/style_ex.sh | 3 | ||||
-rw-r--r-- | ChibiOS_20.3.2/tools/style/style_hal.sh | 7 | ||||
-rw-r--r-- | ChibiOS_20.3.2/tools/style/style_nil.sh | 5 | ||||
-rw-r--r-- | ChibiOS_20.3.2/tools/style/style_rt.sh | 5 | ||||
-rw-r--r-- | ChibiOS_20.3.2/tools/style/stylecheck.pl | 291 | ||||
-rw-r--r-- | ChibiOS_20.3.2/tools/style/test.c | 21 | ||||
-rw-r--r-- | ChibiOS_20.3.2/tools/style/test_negatives.txt | 54 | ||||
-rw-r--r-- | ChibiOS_20.3.2/tools/style/test_positives.txt | 65 |
8 files changed, 451 insertions, 0 deletions
diff --git a/ChibiOS_20.3.2/tools/style/style_ex.sh b/ChibiOS_20.3.2/tools/style/style_ex.sh new file mode 100644 index 0000000..ace92ee --- /dev/null +++ b/ChibiOS_20.3.2/tools/style/style_ex.sh @@ -0,0 +1,3 @@ +#!/bin/bash +find ../../os/ex -name "*.[ch]" -exec perl stylecheck.pl "{}" \; + diff --git a/ChibiOS_20.3.2/tools/style/style_hal.sh b/ChibiOS_20.3.2/tools/style/style_hal.sh new file mode 100644 index 0000000..eef4b28 --- /dev/null +++ b/ChibiOS_20.3.2/tools/style/style_hal.sh @@ -0,0 +1,7 @@ +#!/bin/bash +find ../../os/hal/include -name "*.[ch]" -exec perl stylecheck.pl "{}" \; +find ../../os/hal/src -name "*.[ch]" -exec perl stylecheck.pl "{}" \; +find ../../os/hal/templates -name "*.[ch]" -exec perl stylecheck.pl "{}" \; +find ../../os/hal/osal -name "*.[ch]" -exec perl stylecheck.pl "{}" \; +find ../../os/hal/ports/STM32 -name "*.[ch]" -exec perl stylecheck.pl "{}" \; + diff --git a/ChibiOS_20.3.2/tools/style/style_nil.sh b/ChibiOS_20.3.2/tools/style/style_nil.sh new file mode 100644 index 0000000..12375bf --- /dev/null +++ b/ChibiOS_20.3.2/tools/style/style_nil.sh @@ -0,0 +1,5 @@ +#!/bin/bash +find ../../os/nil -name "*.[ch]" -exec perl stylecheck.pl "{}" \; +find ../../os/oslib -name "*.[ch]" -exec perl stylecheck.pl "{}" \; +find ../../os/license -name "*.[ch]" -exec perl stylecheck.pl "{}" \; + diff --git a/ChibiOS_20.3.2/tools/style/style_rt.sh b/ChibiOS_20.3.2/tools/style/style_rt.sh new file mode 100644 index 0000000..d829d03 --- /dev/null +++ b/ChibiOS_20.3.2/tools/style/style_rt.sh @@ -0,0 +1,5 @@ +#!/bin/bash +find ../../os/rt -name "*.[ch]" -exec perl stylecheck.pl "{}" \; +find ../../os/oslib -name "*.[ch]" -exec perl stylecheck.pl "{}" \; +find ../../os/license -name "*.[ch]" -exec perl stylecheck.pl "{}" \; + diff --git a/ChibiOS_20.3.2/tools/style/stylecheck.pl b/ChibiOS_20.3.2/tools/style/stylecheck.pl new file mode 100644 index 0000000..9a44cbd --- /dev/null +++ b/ChibiOS_20.3.2/tools/style/stylecheck.pl @@ -0,0 +1,291 @@ +#!/usr/bin/perl
+use strict;
+use warnings;
+use File::Basename;
+
+# Desired indentation.
+my $indentation = 2;
+
+if ($#ARGV != 0) {
+ print "\nUsage: stylecheck.pl source\n";
+ exit;
+}
+
+my $source = $ARGV[0];
+
+open(my $in, "<", $source) or die "Can't open source: $!";
+
+my $lineno = 0;
+my @c_source = <$in>;
+my $filename = $source;
+$filename =~ y/\\/\//;
+$filename = basename($filename);
+
+my $cr = "\r";
+my $lf = "\n";
+my $tab = "\t";
+
+sub style {
+ my $desc = shift;
+
+ print("style: $desc at line $lineno in \"$source\"\n");
+}
+
+sub error {
+ my $desc = shift;
+
+ print("error: $desc at line $lineno in \"$source\"\n");
+}
+
+my $emptycnt = 0;
+my $c_comment_complete = 0;
+my $c_comment = "";
+my $state = "start";
+foreach my $line (@c_source) {
+
+ $lineno += 1;
+
+ #****************************************************************************
+ # Processing comments after decoding.
+ if ($c_comment_complete != 0) {
+# print($c_comment . "\n");
+
+ #******************************************************************************
+ # Special case of lint comment.
+ if ("$c_comment" =~ /^\s*\/\*lint/) {
+ }
+ else {
+ #******************************************************************************
+ # Check on glued doxygen back-comment start.
+ if ("$c_comment" =~ /^\s*\/\*\*<[^\s]/) {
+ style "detected glued doxygen back-comment start";
+ }
+
+ #******************************************************************************
+ # Check on glued doxygen comment start.
+ if ("$c_comment" =~ /^\s*\/\*\*[^\s<]/) {
+ style "detected glued doxygen comment start";
+ }
+
+ #******************************************************************************
+ # Check on glued comment start.
+ if ("$c_comment" =~ /^\s*\/\*[^\s\*=]/) {
+ style "detected glued comment start";
+ }
+
+ #******************************************************************************
+ # Check on lower case letter at comment beginning.
+ if ("$c_comment" =~ /^\s*\/\*\s*[a-z]/) {
+ style "detected lower case comment start";
+ }
+
+ #******************************************************************************
+ # Check on loose comment stop.
+# if ("$line" =~ /\s\*\//) {
+# style "detected loose comment stop";
+# }
+ }
+
+ $c_comment_complete = 0;
+ }
+
+ #****************************************************************************
+ # Check on EOL.
+ if (not ($line =~ /$cr$lf$/)) {
+ error "detected malformed EOL";
+ }
+ $line =~ s/$cr//;
+ $line =~ s/$lf//;
+
+ #****************************************************************************
+ # Check on trailing spaces.
+ if ($line =~ /\s$/) {
+ style "detected trailing spaces";
+ }
+
+ #****************************************************************************
+ # Check on TABs.
+ if ($line =~ /$tab/) {
+ style "detected TAB";
+ $line =~ s/$tab/ /;
+ }
+
+ #****************************************************************************
+ # Check on empty lines.
+ my $tmp = $line;
+ $tmp =~ s/\s//;
+ if (length($tmp) == 0) {
+ $emptycnt = $emptycnt + 1;
+ if ($emptycnt == 2) {
+ style "detected multiple empty lines"
+ }
+ next;
+ }
+ else {
+ $emptycnt = 0;
+ }
+
+ #****************************************************************************
+ # Stripping strings content for ease of parsing, all strings become _string_.
+ $line =~ s/\\\"//;
+ if ($line =~ s/(\"[^"]*\")/_string_/) {
+# print "string: $1 replaced by _string_\n";
+ }
+
+ #******************************************************************************
+ # State machine handling.
+ if ($state eq "start") {
+
+ #******************************************************************************
+ # Standard separator.
+
+ #******************************************************************************
+ # Comment start matching.
+ if ("$line" =~ /\/\*/) {
+
+ #******************************************************************************
+ # Single or multi line comments.
+ if ("$line" =~ /\*\//) {
+ # Special case of single line comments.
+ $line =~ /(\/\*.*\*\/)/;
+ $c_comment = $1;
+ $c_comment_complete = 1;
+ }
+ else {
+ # Start of multi-line comment.
+ $line =~ /(\/\*.*)/;
+ $c_comment = $1;
+ $state = "incomment";
+ }
+ }
+ else {
+
+ #****************************************************************************
+ # Check on C++ comments.
+ if ($line =~ /\/\//) {
+ style "detected // comment";
+ }
+
+ #****************************************************************************
+ # Check on commas.
+ if ($line =~ /,\S/) {
+ style "detected comma not followed by space";
+ }
+
+ #****************************************************************************
+ # Check on loose semicolons.
+ if ($line =~ /\S\s;/) {
+ style "detected loose semicolon";
+ }
+
+ #****************************************************************************
+ # Check on glued keywords.
+ if ($line =~ /\sif\(/) {
+ style "detected glued \"if\"";
+ }
+ if ($line =~ /\sfor\(/) {
+ style "detected glued \"for\"";
+ }
+ if ($line =~ /\swhile\(/) {
+ style "detected glued \"while\"";
+ }
+ if ($line =~ /\)while/) {
+ style "detected glued \"while\"";
+ }
+ if ($line =~ /\sswitch\(/) {
+ style "detected glued \"switch\"";
+ }
+ if ($line =~ /\sdo\{/) {
+ style "detected glued \"do\"";
+ }
+
+ #****************************************************************************
+ # Check on loose parenthesis.
+ if ($line =~ /\(\s+/) {
+ style "detected loose \"(\"";
+ }
+ if ($line =~ /\S\s+\)/) {
+ style "detected loose \")\"";
+ }
+
+ #****************************************************************************
+ # Check on glued braces.
+ if ($line =~ /\)\{/) {
+ style "detected glued left brace";
+ }
+ if ($line =~ /\w\{/) {
+ style "detected glued left brace";
+ }
+ if ($line =~ /\}\w/) {
+ style "detected glued right brace";
+ }
+
+ #****************************************************************************
+ # Check on (some) operators.
+ # Before: <<= << >>= >> <= >= == != += -= *= /= %= &= |= ^=
+ if ($line =~ /(\(\S<<=?|\S>>=?|[^\s<]<=|[^\s>]>=|\S[=!+\-*\/%&|^]=)/) {
+ style "detected glued operator (1)";
+ }
+ # After: =
+ elsif ($line =~ /=[^\s=]/) {
+ style "detected glued assignment/comparison operator (2)";
+ }
+ # Before: =
+ elsif ($line =~ /[^\s\=\!\+\-\*\/\%\&\|\^\<\>]=/) {
+ style "detected glued assignment/comparison operator (3)";
+ }
+ # After: << >>
+ elsif ($line =~ /(<<|>>)[^\s=]/) {
+ style "detected glued assignment/comparison operator (4)";
+ }
+ # Before: && || ^^
+ elsif ($line =~ /\S(&&|\|\||\^\^)/) {
+ style "detected glued logical operator (1)";
+ }
+ # After: && || ^^
+ elsif ($line =~ /(&&|\|\||\^\^)\S/) {
+ style "detected glued logical operator (2)";
+ }
+
+ #****************************************************************************
+ # Check function-call-like returns (not perfect so disabled).
+ if ($line =~ /return\s*\(/) {
+ if ($line =~ /return\s*\([\w\d\s\*]*\)\s*[^;]/) {
+ }
+ else {
+# style "detected function-call-like return";
+ }
+ }
+ }
+ }
+
+ #******************************************************************************
+ # Scanning for comment end.
+ elsif ($state eq "incomment") {
+ # Left trimming.
+ $line =~ s/^\s+//;
+ if ("$line" =~ /^\s*\*\/\s*$/) {
+ # Just end of comment line.
+ $c_comment .= "*/";
+ $c_comment_complete = 1;
+# print("$c_comment");
+ $state = "start";
+ }
+ elsif ("$line" =~ /\*\/\s*$/) {
+ # Text followed by end of comment.
+ $line =~ /(.*\*\/)/;
+ $c_comment .= " " . $1;
+ $c_comment_complete = 1;
+# print("$c_comment");
+ $state = "start";
+ }
+ else {
+ # Add the whole line, remove first * and following spaces if any.
+ $line =~ s/^\*?\s*//;
+ $c_comment .= " " . $line;
+# print("$c_comment");
+ }
+ }
+}
+
+close $in or die "$in: $!";
diff --git a/ChibiOS_20.3.2/tools/style/test.c b/ChibiOS_20.3.2/tools/style/test.c new file mode 100644 index 0000000..2135056 --- /dev/null +++ b/ChibiOS_20.3.2/tools/style/test.c @@ -0,0 +1,21 @@ +static struct pippo **pluto (void) {
+
+}
+
+static struct pp qq (void) {
+
+}
+
+static cc ss (void) {
+
+}
+
+static aa bb (int a,
+ char *p) {
+
+}
+
+dd *ee (void) {
+
+ bb(0, "pip\"po", "pluto");
+}
diff --git a/ChibiOS_20.3.2/tools/style/test_negatives.txt b/ChibiOS_20.3.2/tools/style/test_negatives.txt new file mode 100644 index 0000000..fee96e5 --- /dev/null +++ b/ChibiOS_20.3.2/tools/style/test_negatives.txt @@ -0,0 +1,54 @@ +a = b
+a == b
+a != b
+a += b
+a -= b
+a *= b
+a /= b
+a %= b
+a &= b
+a |= b
+a ^= b
+a <= b
+a >= b
+a >> b
+a << b
+a <<= b
+a >>= b
+a && b
+a || b
+a ^^ b
+
+foo(); /* Function call.*/
+
+foo(); /* Multiple lines
+ right comment.*/
+
+/** @} */
+
+/*lint .*/
+
+/* Good comment.*/
+
+/** @Good comment.*/
+
+/**< @Good comment.*/
+
+/*
+ This is a good comment.
+*/
+
+/*
+ * Good comment.
+ */
+
+/* Multiple lines
+ comment 1.*/
+
+/*
+ * Multiple lines
+ * comment 2.
+ */
+
+/*===========================================================================*/
+
diff --git a/ChibiOS_20.3.2/tools/style/test_positives.txt b/ChibiOS_20.3.2/tools/style/test_positives.txt new file mode 100644 index 0000000..ae7e2c7 --- /dev/null +++ b/ChibiOS_20.3.2/tools/style/test_positives.txt @@ -0,0 +1,65 @@ +a=b
+a= b
+a =b
+a==b
+a== b
+a ==b
+a!=b
+a!= b
+a !=b
+a+=b
+a+= b
+a +=b
+a-=b
+a-= b
+a -=b
+a*=b
+a*= b
+a *=b
+a/=b
+a/= b
+a /=b
+a%=b
+a%= b
+a %=b
+a&=b
+a&= b
+a &=b
+a|=b
+a|= b
+a |=b
+a^=b
+a^= b
+a ^=b
+a<=b
+a<= b
+a <=b
+a>=b
+a>= b
+a >=b
+a>>b
+a>> b
+a >>b
+a<<b
+a<< b
+a <<b
+a<<=b
+a<<= b
+a <<=b
+a>>=b
+a>>= b
+a >>=b
+a&&b
+a&& b
+a &&b
+a||b
+a|| b
+a ||b
+a^^b
+a^^ b
+a ^^b
+/** Comment.*/
+/**Comment.*/
+/*Comment*/
+/* comment*/
+/* Comment. */
|