Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/workflows/cpp-linter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

name: C++ Linter

on:
pull_request:
paths-ignore:
- '.github/**'
- 'ci/**'
- 'cmake_modules/**'
branches:
- main

jobs:
cpp-linter:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: cpp-linter/[email protected]
id: linter
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: file
tidy-checks: file
files-changed-only: true
lines-changed-only: true
thread-comments: true
ignore: 'build|cmake_modules|ci'
database: build/compile_commands.json
extra-args: '-std=c++20 -Wall'
- name: Fail fast?!
if: steps.linter.outputs.checks-failed != 0
run: |
echo "some linter checks failed. ${{ steps.linter.outputs.checks-failed }}"
exit 1
1 change: 1 addition & 0 deletions .github/workflows/license_check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
# under the License.

name: "Run License Check"

on: pull_request

jobs:
Expand Down
21 changes: 15 additions & 6 deletions api/iceberg/table.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*

Check notice on line 1 in api/iceberg/table.h

View workflow job for this annotation

GitHub Actions / cpp-linter

Run clang-format on api/iceberg/table.h

File api/iceberg/table.h does not conform to Custom style guidelines. (lines 30, 32, 34, 37)
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
Expand All @@ -19,16 +19,25 @@

#pragma once

#include <memory>

Check failure on line 22 in api/iceberg/table.h

View workflow job for this annotation

GitHub Actions / cpp-linter

api/iceberg/table.h:22:10 [clang-diagnostic-error]

'memory' file not found
#include <string_view>

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@raulcd It seems that this issue still exists.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been able to reproduce the memory error locally:

$ clang-tidy-18 -p ../iceberg-cpp -checks=file  --format-style file ../iceberg-cpp/api/iceberg/table.h --extra-arg=-std=c++17 --enable-module-headers-parsing 
Error while trying to load a compilation database:
Could not auto-detect compilation database from directory "../iceberg-cpp"
No compilation database found in /home/raulcd/code/arrow/../iceberg-cpp or any parent directory
fixed-compilation-database: Error while opening fixed database: No such file or directory
json-compilation-database: Error while opening JSON database: No such file or directory
Running without flags.
/home/raulcd/code/arrow/.clang-tidy:30:1: error: unknown key 'AnalyzeTemporaryDtors'
AnalyzeTemporaryDtors: true
^~~~~~~~~~~~~~~~~~~~~
Error parsing /home/raulcd/code/arrow/.clang-tidy: Invalid argument
/home/raulcd/code/arrow/.clang-tidy:30:1: error: unknown key 'AnalyzeTemporaryDtors'
AnalyzeTemporaryDtors: true
^~~~~~~~~~~~~~~~~~~~~
Error parsing /home/raulcd/code/arrow/.clang-tidy: Invalid argument
/home/raulcd/code/arrow/.clang-tidy:30:1: error: unknown key 'AnalyzeTemporaryDtors'
AnalyzeTemporaryDtors: true
^~~~~~~~~~~~~~~~~~~~~
Error parsing /home/raulcd/code/arrow/.clang-tidy: Invalid argument
/home/raulcd/code/arrow/.clang-tidy:30:1: error: unknown key 'AnalyzeTemporaryDtors'
AnalyzeTemporaryDtors: true
^~~~~~~~~~~~~~~~~~~~~
Error parsing /home/raulcd/code/arrow/.clang-tidy: Invalid argument
2 errors generated.
Error while processing /home/raulcd/code/arrow/../iceberg-cpp/api/iceberg/table.h.
error: invalid argument '-std=c++17' not allowed with 'C' [clang-diagnostic-error]
/home/raulcd/code/arrow/../iceberg-cpp/api/iceberg/table.h:22:10: error: 'memory' file not found [clang-diagnostic-error]
   22 | #include <memory>
      |          ^~~~~~~~
Found compiler error(s).

We might need to generate a compilation database first and use the database attribute: https://cpp-linter.github.io/cpp-linter-action/inputs-outputs/#database. It seems like it is detecting as if it's a C project by default without it.
If I build and use the build folder with -p it is successful:

$ clang-tidy-18 -p /home/raulcd/code/iceberg-cpp/build -checks=file  --format-style file ../api/iceberg/table.h --extra-arg=-std=c++17 --enable-module-headers-parsing

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have inserted a build step before the cpp-linter to create the compile_commands.json. Now it seems working.



#include <string_view>

namespace iceberg {

class Table {
public:
virtual ~Table() = default;
virtual std::string_view print() const = 0;
static std::unique_ptr<Table> create();
class Table {
public:
virtual ~Table( ) = default;

virtual std::string_view print() const = 0;


static std::unique_ptr<Table> create();

private:
int SOME_ID = 1;
};

} // namespace iceberg
Loading