diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..68da04a --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,5 @@ +--- +Checks: 'clang-diagnostic-*,clang-analyzer-*,cert-*,cppcoreguidelines-*,modernize-*,performance-*,readability-*' +WarningsAsErrors: '' +FormatStyle: file + diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..bfe4f44 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,42 @@ +name: Build + +on: [pull_request, push] + +jobs: + build: + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu + cc: gcc + cxx: g++ + + - os: ubuntu + cc: clang + cxx: clang++ + + - os: macos + + - os: windows + + runs-on: ${{matrix.os}}-latest + + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Configure CC & CXX + if: matrix.cc != '' && matrix.cxx != '' + run: echo "CC=${{matrix.cc}}" >> $GITHUB_ENV && echo "CXX=${{matrix.cxx}}" >> $GITHUB_ENV + + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + + - name: Build + run: cmake --build ${{github.workspace}}/build --config Release + + - name: Run clang-tidy + if: matrix.os == 'ubuntu' && matrix.cc == 'clang' + run: clang-tidy --warnings-as-errors="*" -p ${{github.workspace}}/build src/**/*.* diff --git a/.gitignore b/.gitignore index b8c1896..53bb566 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ build/ build-debug/ build-release/ build-relwithdebinfo/ +cmake-build-*/ + +.idea/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 53ba954..e8d60c4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ -cmake_minimum_required(VERSION 3.2) +cmake_minimum_required(VERSION 3.5) project(bin2s) -if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wpedantic -Werror") - set(CMAKE_CXX_FLAGS_DEBUG "-g") +if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wpedantic") + set(CMAKE_CXX_FLAGS_DEBUG "-g") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O2 -DNDEBUG") - if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") + if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") set(CMAKE_EXECUTABLE_LINKER_FLAGS "${CMAKE_EXECUTABLE_LINKER_FLAGS} -stdlib=libc++") endif() @@ -16,7 +16,7 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.7") endif() elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX /MP") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /MP") set(CMAKE_CXX_FLAGS_DEBUG "/ZI") set(CMAKE_CXX_FLAGS_RELEASE "/O2 /DNDEBUG") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Zi /DNDEBUG") diff --git a/src/bin2s.cpp b/src/bin2s.cpp index 2344cbd..a8e6945 100644 --- a/src/bin2s.cpp +++ b/src/bin2s.cpp @@ -86,7 +86,7 @@ result bin2s(const std::string &identifier, std::istream &input, auto cur_pos = input.tellg(); input.seekg(0, std::ios::end); - auto size = input.tellg() - cur_pos; + std::streamsize size = input.tellg() - cur_pos; input.seekg(cur_pos); if (size == 0) return result::empty_stream;