CI: added clang-tidy

pull/271/head
SChernykh 2023-06-14 13:58:51 +02:00
parent 950330b5f7
commit 8b4f05dc78
5 changed files with 41 additions and 8 deletions

30
.github/workflows/clang-tidy.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: clang-tidy
on: [push, pull_request]
jobs:
clang-tidy:
runs-on: ubuntu-22.04
steps:
- name: Install clang
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 16
sudo apt-get install -y clang-tidy-16
- name: Verify clang-tidy configuration
run: |
clang-tidy-16 --verify-config
- name: Checkout repository
uses: actions/checkout@v3
with:
submodules: true
- name: Run clang-tidy
run: |
cd src
clang-tidy-16 *.cpp -checks=-clang-diagnostic-undefined-internal -warnings-as-errors=* -- -I../external/src/robin-hood-hashing/src/include -I../external/src/rapidjson/include -I../external/src/cryptonote -I../external/src/RandomX/src -I../external/src/cppzmq -I../external/src/libuv/include -I../external/src/libzmq/include -I../external/src/curl/include -I../external/src -DCLANG_TIDY -DSIZE_MAX=UINT64_MAX -DRAPIDJSON_ENDIAN=RAPIDJSON_LITTLEENDIAN -DRAPIDJSON_PARSE_DEFAULT_FLAGS=kParseTrailingCommasFlag

View File

@ -24,6 +24,7 @@ Reddit discussions: [original announcement](https://www.reddit.com/r/MoneroMinin
<img alt="Coverity Scan Build Status"
src="https://scan.coverity.com/projects/23659/badge.svg"/>
</a>
![clang-tidy](https://github.com/SChernykh/p2pool/actions/workflows/clang-tidy.yml/badge.svg)
# Contents
- [Pool mining vs Solo mining vs P2Pool mining](#pool-mining-vs-solo-mining-vs-p2pool-mining)
- [Features](#features)

View File

@ -204,7 +204,7 @@ struct
{
#ifdef _MSC_VER
_addcarry_u64(_addcarry_u64(0, lo, b.lo, &lo), hi, b.hi, &hi);
#elif __GNUC__
#elif defined(__GNUC__) && !defined(CLANG_TIDY)
*reinterpret_cast<unsigned __int128*>(this) += *reinterpret_cast<const unsigned __int128*>(&b);
#else
const uint64_t t = lo;
@ -221,7 +221,7 @@ struct
{
#ifdef _MSC_VER
_subborrow_u64(_subborrow_u64(0, lo, b.lo, &lo), hi, b.hi, &hi);
#elif __GNUC__
#elif defined(__GNUC__) && !defined(CLANG_TIDY)
*reinterpret_cast<unsigned __int128*>(this) -= *reinterpret_cast<const unsigned __int128*>(&b);
#else
const uint64_t t = b.lo;

View File

@ -65,7 +65,7 @@ struct Stream
return *this;
}
template<typename T, int base = 10>
template<typename T, unsigned int base = 10>
NOINLINE void writeInt(T data)
{
static_assert(1 < base && base <= 64, "Invalid base");
@ -78,11 +78,13 @@ struct Stream
size_t k = sizeof(buf);
int w = m_numberWidth;
std::make_unsigned_t<T> udata = static_cast<std::make_unsigned_t<T>>(data);
do {
buf[--k] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/"[data % base];
data /= base;
buf[--k] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/"[udata % base];
udata /= base;
--w;
} while ((data > 0) || (w > 0));
} while (udata || (w > 0));
if (negative) {
buf[--k] = '-';

View File

@ -804,13 +804,13 @@ bool p2pool::get_timestamps(uint64_t (&timestamps)[TIMESTAMP_WINDOW]) const
{
ReadLock lock(m_mainchainLock);
if (m_mainchainByHeight.size() <= TIMESTAMP_WINDOW) {
if (m_mainchainByHeight.size() < TIMESTAMP_WINDOW) {
return false;
}
auto it = m_mainchainByHeight.end();
for (int i = 0; (i < TIMESTAMP_WINDOW) && (it != m_mainchainByHeight.begin()); ++i) {
for (int i = 0; i < TIMESTAMP_WINDOW; ++i) {
--it;
timestamps[i] = it->second.timestamp;
}