[cfe-dev] Repeated clang-format'ting keeps changing code / use of clang-format in CI

Sebastian Pipping via cfe-dev cfe-dev at lists.llvm.org
Fri Jul 26 14:03:23 PDT 2019

Hi Nico,

that's great to hear.  I have attached a script to reproduce the issue
from public code of libexpat 2.2.7 as well as the second iteration diff
I get from clang-format version 10.0.0
c0048be7ff340ebba3092e95d82147bc9928b909) of Gentoo.



On 26.07.19 22:07, Nico Weber wrote:
> clang-cl is supposed to reach a fixpoint in one iteration. If it
> doesn't, that's a bug. If you can, please post a reduced repro case :)
> On Thu, Jul 25, 2019 at 5:38 PM Sebastian Pipping via cfe-dev
> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>     Hi!
>     I'm trying to integrate clang-format version 9 with CI in a way that the
>     CI run only passes if applying clang-format yields the exact same
>     code, i.e. "git diff --exit-code" returns 0.  The idea is that every
>     pull request would only pass if clang-format
>     When trying to put that approach to action with libexpat [1]
>     I noticed that multiple runs to clang-format do not seem to produce the
>     same code, at least not with the two version of Clang 9 that I tested
>     [2], and at least not with libexpat code.
>     I wonder if that's a known problem, if it's fixed in later versions
>     of clang-format, if you are aware of workarounds, or if I just need
>     to say goodbye to combining clang-format and CI for stable style
>     checking.
>     Thanks in advance!
>     Best
>     Sebastian
>     [1] https://github.com/libexpat/libexpat/pull/293
>     [2] commit 28c954cf961a846789a972a8ed179b7108244ae7
>     _______________________________________________
>     cfe-dev mailing list
>     cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>     https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-------------- next part --------------
#! /usr/bin/env bash
set -e
set -x
wget https://github.com/libexpat/libexpat/releases/download/R_2_2_7/expat-2.2.7.tar.xz
tar xf expat-2.2.7.tar.xz 
cd expat-2.2.7/
git init
git add lib/xmltok_impl.c tests/runtests.c && git commit -m 'Original code'
clang-format -verbose -i lib/xmltok_impl.c tests/runtests.c && git commit -a -m 'First round'
clang-format -verbose -i lib/xmltok_impl.c tests/runtests.c && git diff --exit-code
-------------- next part --------------
A non-text attachment was scrubbed...
Name: expat-2-2-7-clang-format-second-round.diff
Type: text/x-patch
Size: 25599 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190726/d4a382ed/attachment.bin>

More information about the cfe-dev mailing list