clang-format: standardize on 5.0.0
Restrict the git hook further to only enforce style in case the found clang-format binary's version matches to avoid output differences with different clang-format version. While at it, move the blacklist reading after the version check to speed up committing a bit when no local enforcement happens. Also add a simple script to list formatted files, since the blacklist is large enough that doing it naively from the shell is too slow. Change-Id: I0bc05961d262cc6bc91c6efdd1b91994ecfc6940 Reviewed-on: https://gerrit.libreoffice.org/44662 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org>
This commit is contained in:
+25
-13
@@ -108,6 +108,18 @@ sub check_whitespaces($)
|
||||
}
|
||||
}
|
||||
|
||||
# Is this binary the version we standardize on?
|
||||
sub is_matching_clang_format_version($$)
|
||||
{
|
||||
my ($clang_format, $version) = @_;
|
||||
if (! -x $clang_format)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return `$clang_format -version` =~ /^clang-format version $version \(tags/;
|
||||
}
|
||||
|
||||
sub check_style($)
|
||||
{
|
||||
my ($h) = @_;
|
||||
@@ -119,35 +131,25 @@ sub check_style($)
|
||||
# directory.
|
||||
my $opt_lo = "/opt/lo/bin";
|
||||
my $clang_format = "$opt_lo/clang-format";
|
||||
if (! -x $clang_format)
|
||||
my $version = "5.0.0";
|
||||
if (!is_matching_clang_format_version($clang_format, $version))
|
||||
{
|
||||
foreach my $dir (split /:/, $ENV{PATH})
|
||||
{
|
||||
$clang_format = "$dir/clang-format";
|
||||
if (-x $clang_format)
|
||||
if (is_matching_clang_format_version($clang_format, $version))
|
||||
{
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Read the blacklist.
|
||||
if (open(LINES, "solenv/clang-format/blacklist"))
|
||||
{
|
||||
while (my $line = <LINES>)
|
||||
{
|
||||
chomp $line;
|
||||
$blacklist_names{$line} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
# Check if clang-format is installed.
|
||||
if (! -x $clang_format)
|
||||
{
|
||||
# As a first step, don't do any checks in this case.
|
||||
return;
|
||||
|
||||
my $version = "r302580";
|
||||
my $platform = "linux64";
|
||||
my $download = "wget";
|
||||
if ($^O eq "cygwin")
|
||||
@@ -170,6 +172,16 @@ sub check_style($)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
# Read the blacklist.
|
||||
if (open(LINES, "solenv/clang-format/blacklist"))
|
||||
{
|
||||
while (my $line = <LINES>)
|
||||
{
|
||||
chomp $line;
|
||||
$blacklist_names{$line} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ($^O eq "cygwin")
|
||||
{
|
||||
$clang_format = `cygpath -m $clang_format`;
|
||||
|
||||
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
# Lists source files which are not blacklisted. This is interesting if the
|
||||
# clang-format version or config changes. To trigger a reformat in that case,
|
||||
# you can do:
|
||||
#
|
||||
# clang-format -i $(solenv/clang-format/list-formatted-files)
|
||||
|
||||
sub check_style()
|
||||
{
|
||||
my $src = "c|cpp|cxx|h|hxx|inl";
|
||||
my %blacklist_names = ();
|
||||
|
||||
# Read the blacklist.
|
||||
if (open(LINES, "solenv/clang-format/blacklist"))
|
||||
{
|
||||
while (my $line = <LINES>)
|
||||
{
|
||||
chomp $line;
|
||||
$blacklist_names{$line} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
# Get a list of files.
|
||||
open (FILES, "git ls-files |") || die "Cannot run git ls-files.";
|
||||
while (my $filename = <FILES>)
|
||||
{
|
||||
chomp $filename;
|
||||
if ($filename =~ /\.($src)$/ and !exists($blacklist_names{$filename}))
|
||||
{
|
||||
print($filename . "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
check_style();
|
||||
|
||||
exit(0);
|
||||
|
||||
# vim: set shiftwidth=4 softtabstop=4 expandtab:
|
||||
@@ -184,9 +184,10 @@ void Qt5Frame::SetTitle(const OUString& rTitle)
|
||||
|
||||
void Qt5Frame::SetIcon(sal_uInt16 nIcon)
|
||||
{
|
||||
if (m_nStyle & (SalFrameStyleFlags::PLUG | SalFrameStyleFlags::SYSTEMCHILD
|
||||
| SalFrameStyleFlags::FLOAT | SalFrameStyleFlags::INTRO
|
||||
| SalFrameStyleFlags::OWNERDRAWDECORATION)
|
||||
if (m_nStyle
|
||||
& (SalFrameStyleFlags::PLUG | SalFrameStyleFlags::SYSTEMCHILD
|
||||
| SalFrameStyleFlags::FLOAT | SalFrameStyleFlags::INTRO
|
||||
| SalFrameStyleFlags::OWNERDRAWDECORATION)
|
||||
|| !m_pQWidget->isWindow())
|
||||
return;
|
||||
|
||||
@@ -268,7 +269,7 @@ void Qt5Frame::SetPosSize(long nX, long nY, long nWidth, long nHeight, sal_uInt1
|
||||
|
||||
if ((nFlags & (SAL_FRAME_POSSIZE_WIDTH | SAL_FRAME_POSSIZE_HEIGHT))
|
||||
&& (nWidth > 0 && nHeight > 0) // sometimes stupid things happen
|
||||
)
|
||||
)
|
||||
{
|
||||
m_bDefaultSize = false;
|
||||
if (isChild(false) || !m_pQWidget->isMaximized())
|
||||
@@ -332,8 +333,9 @@ void Qt5Frame::SetWindowState(const SalFrameState* pState)
|
||||
if ((pState->mnMask & WindowStateMask::State) && (pState->mnState & WindowStateState::Maximized)
|
||||
&& (pState->mnMask & nMaxGeometryMask) == nMaxGeometryMask)
|
||||
m_pQWidget->showMaximized();
|
||||
else if (pState->mnMask & (WindowStateMask::X | WindowStateMask::Y | WindowStateMask::Width
|
||||
| WindowStateMask::Height))
|
||||
else if (pState->mnMask
|
||||
& (WindowStateMask::X | WindowStateMask::Y | WindowStateMask::Width
|
||||
| WindowStateMask::Height))
|
||||
{
|
||||
sal_uInt16 nPosSizeFlags = 0;
|
||||
QPoint aPos = m_pQWidget->pos();
|
||||
|
||||
@@ -56,7 +56,8 @@ static int tst_excludePostedEvents()
|
||||
TestExcludePostedEvents test;
|
||||
QCoreApplication::postEvent(&test, new QEvent(eventType));
|
||||
QEventLoop loop;
|
||||
loop.processEvents(QEventLoop::ExcludeUserInputEvents | QEventLoop::ExcludeSocketNotifiers
|
||||
loop.processEvents(QEventLoop::ExcludeUserInputEvents
|
||||
| QEventLoop::ExcludeSocketNotifiers
|
||||
// | QEventLoop::WaitForMoreEvents
|
||||
| QEventLoop::X11ExcludeTimers);
|
||||
QVERIFY(!test.processed);
|
||||
|
||||
Reference in New Issue
Block a user