Re: [PATCH 11/11] maint: enforce comma style usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 20/11/13 08:30, Eric Blake wrote:
Enforce and document the style set up by the previous patches.

* build-aux/bracket-spacing.pl: Add comma checks.
* docs/hacking.html.in: Document the rules.
* HACKING: Regenerate.

Signed-off-by: Eric Blake <eblake@xxxxxxxxxx>
---
  HACKING                      | 25 +++++++++++++++++++++++++
  build-aux/bracket-spacing.pl | 15 +++++++++++----
  docs/hacking.html.in         | 31 +++++++++++++++++++++++++++++++
  3 files changed, 67 insertions(+), 4 deletions(-)

diff --git a/HACKING b/HACKING
index f8797cc..357a4bd 100644
--- a/HACKING
+++ b/HACKING
@@ -325,6 +325,31 @@ immediately prior to any closing bracket. E.g.
        int foo(int wizz);    // Good


+Commas
+======
+Commas should always be followed by a space or end of line, and never have
+leading space; this is enforced during 'make check'.
+
+      call(a,b ,c);// Bad
+      call(a, b, c); // Good
+
+When declaring an enum or using a struct initializer that occupies more than
+one line, use a trailing comma. That way, future edits to extend the list only
+have to add a line, rather than modify an existing line to add the
+intermediate comma.

Not sure if we need to explain more about the trailing comma for an enum
or a struct helps on code auto generation and parsing.

However, this is harder to enforce, so you will find
+counterexamples in existing code. Additionally, any sentinel enumerator value
+with a name ending in _LAST is exempt.
+
+      enum {
+          VALUE_ONE,
+          VALUE_TWO // Bad
+      };
+      enum {
+          VALUE_THREE,
+          VALUE_FOUR, // Good
+      };
+
+
  Semicolons
  ==========
  Semicolons should never have a space beforehand. Inside the condition of a
diff --git a/build-aux/bracket-spacing.pl b/build-aux/bracket-spacing.pl
index 4c19968..802a640 100755
--- a/build-aux/bracket-spacing.pl
+++ b/build-aux/bracket-spacing.pl
@@ -32,8 +32,8 @@ foreach my $file (@ARGV) {
      while (defined (my $line = <FILE>)) {
          my $data = $line;

-        # Kill any quoted ; or "
-        $data =~ s,'[";]','X',g;
+        # Kill any quoted , ; or "
+        $data =~ s/'[";,]'/'X'/g;

          # Kill any quoted strings
          $data =~ s,"([^\\\"]|\\.)*","XXX",g;
@@ -114,7 +114,7 @@ foreach my $file (@ARGV) {
              last;
          }

-        # Forbid whitespace before ";". Things like below are allowed:
+        # Forbid whitespace before ";" or ",". Things like below are allowed:
          #
          # 1) The expression is empty for "for" loop. E.g.
          #   for (i = 0; ; i++)
@@ -124,7 +124,7 @@ foreach my $file (@ARGV) {
          #          errno == EINTR)
          #       ;
          #
-        while ($data =~ /[^;\s]\s+;/) {
+        while ($data =~ /[^;\s]\s+[;,]/) {
              print "$file:$.: $line";
              $ret = 1;
              last;
@@ -137,6 +137,13 @@ foreach my $file (@ARGV) {
              $ret = 1;
              last;
          }
+
+        # Require EOL, space, or enum/struct end after comma.
+        while ($data =~ /,[^ \\\n)}]/) {
+            print "$file:$.: $line";
+            $ret = 1;
+            last;
+        }
      }
      close FILE;
  }
diff --git a/docs/hacking.html.in b/docs/hacking.html.in
index 7f31abf..cc76997 100644
--- a/docs/hacking.html.in
+++ b/docs/hacking.html.in
@@ -402,6 +402,37 @@
        int foo(int wizz);    // Good
  </pre>

+    <h2><a name="comma">Commas</a></h2>
+
+    <p>
+      Commas should always be followed by a space or end of line, and
+      never have leading space; this is enforced during 'make check'.
+    </p>
+    <pre>
+      call(a,b ,c);// Bad
+      call(a, b, c); // Good
+</pre>
+
+    <p>
+      When declaring an enum or using a struct initializer that
+      occupies more than one line, use a trailing comma.  That way,
+      future edits to extend the list only have to add a line, rather
+      than modify an existing line to add the intermediate comma.
+      However, this is harder to enforce, so you will find
+      counterexamples in existing code.  Additionally, any sentinel
+      enumerator value with a name ending in _LAST is exempt.
+    </p>
+    <pre>
+      enum {
+          VALUE_ONE,
+          VALUE_TWO // Bad
+      };
+      enum {
+          VALUE_THREE,
+          VALUE_FOUR, // Good
+      };
+</pre>
+
      <h2><a name="semicolon">Semicolons</a></h2>

      <p>

ACK either way w.r.t the comment.  Thanks for the not interesting work. :-)

Regards,
Osier

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]