[lldb-dev] LLDB Evolution

Zachary Turner via lldb-dev lldb-dev at lists.llvm.org
Tue Aug 9 10:01:07 PDT 2016

On Mon, Aug 8, 2016 at 2:40 PM Kate Stone via lldb-dev <
lldb-dev at lists.llvm.org> wrote:

> *Near-Term Goal: Standardizing on LLVM-style clang-format Rules*
> We’ve heard from several in the community that would prefer to have a
> single code formatting style to further unify the two code bases.  Using
> clang-format with the default LLVM conventions would simplify code
> migration, editor configuration, and coding habits for developers who work
> in multiple LLVM projects.  There are non-trivial implications to
> reformatting a code base with this much history.  It can obfuscate history
> and impact downstream projects by complicating merges.  Ideally, it should
> be done once with as much advance notice as is practical.  Here’s the
> timeline we’re proposing:
> *Today* - mechanical reformatting proposed, comment period begins
> To get a preview of what straightforward reformatting of the code looks
> like, just follow these steps to get a clean copy of the repository and
> reformat it:
>    1. Check out a clean copy of the existing repository
>    2. Edit .clang-format in the root of the tree, remove all but the line
>    “BasedOnStyle: LLVM”
>    3. Change your current working directory to the root of the tree to
>    reformat
>    4. Double-check to make sure you did step 3 ;-)
>    5. Run the following shell command: "find . -name "*.[c,cpp,h] -exec
>    clang-format -i {} +"
> *Aug 20th* - comment period closes, final schedule proposed
> *TBD (early September?)* - patches land in svn
> The purpose of the comment period is to review the straightforward diffs
> to identify areas where comment pragmas should be used to avoid undesirable
> formatting (tables laid out in code are a classic example.)  It’s also a
> time when feedback on the final timetable can be discussed, and any
> unforeseen implications can be discovered.  We understand that LLDB tends
> toward relatively long names that may not always work well with the LLVM
> convention of wrapping at 80 columns.  Worst case scenarios will be
> evaluated to determine the desired course of action.

One thing we will need to take a look at is functions which have a very
deep indentation level. They have the potential to be made really ugly by
clang-format.  The default indentation will be reduced from 4 to 2, so that
will help, but I recall we had some lines that began very far to the right.

Here's a little bash command shows all lines with >= 50 leading spaces,
sorted in descending order by number of leading spaces.

grep -n '^ \+' . -r -o | awk '{t=length($0);sub(" *$","");printf("%s%d\n",
$0, t-length($0));}' |  sort -t: -n -k 3 -r | awk 'BEGIN { FS = ":" } ; {
if ($3 >= 50) print $0 }'

It's less useful than I was hoping because most of the lines are noise
(line breaking in a function parameter list).

If there were a way to detect indentation level that would be better.
Mostly just to identify places that we should manually inspect after
running clang-format.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160809/7c674e92/attachment.html>

More information about the lldb-dev mailing list