From 70b2a41d5ea8e9d4237ac4093f409631b24770e4 Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Tue, 9 Apr 2019 10:59:09 +0200 Subject: [PATCH] clang tidy --- .clang-tidy | 18 +++- CMakeLists.txt | 11 +-- integrationTests/CMakeLists.txt | 6 +- integrationTests/src/a.cpp | 4 + python/CMakeLists.txt | 3 +- slsDetectorSoftware/CMakeLists.txt | 17 ++++ slsDetectorSoftware/include/slsDetector.h | 4 +- slsDetectorSoftware/src/slsDetector.cpp | 99 ++++++++++--------- .../tests/test-SharedMemory.cpp | 2 +- .../tests/test-slsDetector.cpp | 4 +- slsReceiverSoftware/CMakeLists.txt | 9 +- slsSupportLib/CMakeLists.txt | 5 + 12 files changed, 116 insertions(+), 66 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 7c2775daf..8dd21c1bb 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,5 +1,21 @@ --- -Checks: '*, -google-runtime-references, -hicpp-no-array-decay, -cppcoreguidelines-pro-bounds-array-to-pointer-decay, -cppcoreguidelines-pro-bounds-pointer-arithmetic, -fuchsia*,-readability-else-after-return,-readability-avoid-const-params-in-decls,-hicpp-signed-bitwise,-cppcoreguidelines-pro-bounds-constant-array-index,-llvm-header-guard,-readability-static-accessed-through-instance,-google-readability-todo' +Checks: '*, + -google-runtime-references, + -cppcoreguidelines-pro-bounds-array-to-pointer-decay, + -cppcoreguidelines-pro-bounds-pointer-arithmetic, + -fuchsia*, + -readability-else-after-return, + -readability-avoid-const-params-in-decls, + -cppcoreguidelines-pro-bounds-constant-array-index, + -cppcoreguidelines-pro-type-reinterpret-cast, + -llvm-header-guard, + -readability-static-accessed-through-instance, + -readability-braces-around-statements, + -hicpp-signed-bitwise, + -hicpp-no-array-decay, + -hicpp-braces-around-statements, + -google-readability-todo, + -google-readability-braces-around-statements' WarningsAsErrors: '*' HeaderFilterRegex: '.*' AnalyzeTemporaryDtors: false diff --git a/CMakeLists.txt b/CMakeLists.txt index 087d9aaa9..858528c56 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,13 +2,8 @@ cmake_minimum_required(VERSION 3.9) project(slsDetectorPackage) set(PROJECT_VERSION 5.0.0) - include(CheckIPOSupported) - check_ipo_supported(RESULT result) - if(result) - set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) -# set(CMAKE_INTERPROCEDURAL_OPTIMIZATION FALSE) - endif() + @@ -69,6 +64,8 @@ target_compile_options(slsProjectWarnings INTERFACE -Wdouble-promotion -Wformat=2 -Wredundant-decls + # -Wconversion + -Wdouble-promotion ) @@ -163,6 +160,8 @@ if (SLS_USE_PYTHON) add_subdirectory(python) endif(SLS_USE_PYTHON) +configure_file( .clang-tidy + ${CMAKE_BINARY_DIR}/.clang-tidy ) if(SLS_MASTER_PROJECT) # Set install dir CMake packages diff --git a/integrationTests/CMakeLists.txt b/integrationTests/CMakeLists.txt index 10d53fad2..23899ca6b 100644 --- a/integrationTests/CMakeLists.txt +++ b/integrationTests/CMakeLists.txt @@ -16,6 +16,8 @@ if(SLS_USE_TESTS) target_link_libraries(detector_test slsDetectorShared + slsProjectOptions + slsProjectWarnings slsSupportLib pthread rt @@ -23,9 +25,11 @@ if(SLS_USE_TESTS) set_target_properties(detector_test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin ) - add_executable(a src/a.cpp) + add_executable(a src/a.cpp) target_link_libraries(a + slsProjectOptions + slsProjectWarnings slsDetectorShared slsSupportLib pthread diff --git a/integrationTests/src/a.cpp b/integrationTests/src/a.cpp index 14407da60..54bee1769 100644 --- a/integrationTests/src/a.cpp +++ b/integrationTests/src/a.cpp @@ -35,6 +35,10 @@ std::ostream &operator<<(std::ostream &out, const ROI &r) { } int main() { + + int ret[3]{}; + for (auto i: ret) + std::cout << i << "\n"; // uint32_t imageSize = 101; // uint32_t packetSize = 100; // std::cout << "a: " << std::ceil((double)imageSize / (double)packetSize) <<'\n'; diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index b5ed187af..e20bc492a 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -42,4 +42,5 @@ endforeach(FILE ${PYTHON_FILES}) configure_file( scripts/basic.py - ${CMAKE_BINARY_DIR}/basic.py ) \ No newline at end of file + ${CMAKE_BINARY_DIR}/basic.py +) \ No newline at end of file diff --git a/slsDetectorSoftware/CMakeLists.txt b/slsDetectorSoftware/CMakeLists.txt index 503e0d442..491af3f89 100644 --- a/slsDetectorSoftware/CMakeLists.txt +++ b/slsDetectorSoftware/CMakeLists.txt @@ -12,6 +12,15 @@ add_library(slsDetectorShared SHARED ${SOURCES} ${HEADERS} ) + + + +check_ipo_supported(RESULT result) +if(result) + set_property(TARGET slsDetectorShared PROPERTY INTERPROCEDURAL_OPTIMIZATION True) +endif() + + target_include_directories(slsDetectorShared PUBLIC "$" "$" @@ -105,6 +114,14 @@ set_target_properties(sls_detector_help PROPERTIES COMPILE_DEFINITIONS HELP=1 ) +check_ipo_supported(RESULT result) +if(result) + set_property(TARGET sls_detector_help PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + set_property(TARGET sls_detector_get PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + set_property(TARGET sls_detector_put PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + set_property(TARGET sls_detector_acquire PROPERTY INTERPROCEDURAL_OPTIMIZATION True) +endif() + install(TARGETS sls_detector_put sls_detector_get sls_detector_acquire sls_detector_help DESTINATION bin) diff --git a/slsDetectorSoftware/include/slsDetector.h b/slsDetectorSoftware/include/slsDetector.h index 96abd28c5..3cef75081 100644 --- a/slsDetectorSoftware/include/slsDetector.h +++ b/slsDetectorSoftware/include/slsDetector.h @@ -22,7 +22,7 @@ class MySocketTCP; /** * parameter list that has to be initialized depending on the detector type */ -struct detParameterList { +struct detParameters { int nChanX; int nChanY; int nChipX; @@ -1725,7 +1725,7 @@ class slsDetector : public virtual slsDetectorDefs{ * @param type detector type * @param list structure of parameters to initialize depending on detector type */ - void setDetectorSpecificParameters(detectorType type, detParameterList &list); + void setDetectorSpecificParameters(detectorType type, detParameters &list); /** * Initialize detector structure to defaults diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp index 4d60e50c0..235e78b75 100644 --- a/slsDetectorSoftware/src/slsDetector.cpp +++ b/slsDetectorSoftware/src/slsDetector.cpp @@ -170,7 +170,7 @@ int64_t slsDetector::getReceiverSoftwareVersion() const { ret = receiver.sendCommandThenRead(fnum, nullptr, 0, &retval, sizeof(retval)); } if (ret == FORCE_UPDATE) { - ret = updateCachedReceiverVariables(); + updateCachedReceiverVariables(); } return retval; } @@ -213,7 +213,7 @@ void slsDetector::initSharedMemory(detectorType type, int multi_id, bool verify) } } -void slsDetector::setDetectorSpecificParameters(detectorType type, detParameterList &list) { +void slsDetector::setDetectorSpecificParameters(detectorType type, detParameters &list) { switch (type) { case GOTTHARD: list.nChanX = 128; @@ -374,16 +374,16 @@ void slsDetector::initializeDetectorStructure(detectorType type) { detector_shm()->receiver_overWriteEnable = true; // get the detector parameters based on type - detParameterList detlist; - setDetectorSpecificParameters(type, detlist); - detector_shm()->nChan[X] = detlist.nChanX; - detector_shm()->nChan[Y] = detlist.nChanY; - detector_shm()->nChip[X] = detlist.nChipX; - detector_shm()->nChip[Y] = detlist.nChipY; - detector_shm()->nDacs = detlist.nDacs; - detector_shm()->dynamicRange = detlist.dynamicRange; - detector_shm()->nGappixels[X] = detlist.nGappixelsX; - detector_shm()->nGappixels[Y] = detlist.nGappixelsY; + detParameters parameters{}; + setDetectorSpecificParameters(type, parameters); + detector_shm()->nChan[X] = parameters.nChanX; + detector_shm()->nChan[Y] = parameters.nChanY; + detector_shm()->nChip[X] = parameters.nChipX; + detector_shm()->nChip[Y] = parameters.nChipY; + detector_shm()->nDacs = parameters.nDacs; + detector_shm()->dynamicRange = parameters.dynamicRange; + detector_shm()->nGappixels[X] = parameters.nGappixelsX; + detector_shm()->nGappixels[Y] = parameters.nGappixelsY; // derived parameters detector_shm()->nChans = detector_shm()->nChan[X] * detector_shm()->nChan[Y]; @@ -413,13 +413,13 @@ slsDetectorDefs::sls_detector_module *slsDetector::createModule() { slsDetectorDefs::sls_detector_module *slsDetector::createModule(detectorType type) { // get the detector parameters based on type - detParameterList detlist; + detParameters parameters{}; int nch = 0, nc = 0, nd = 0; try { - setDetectorSpecificParameters(type, detlist); - nch = detlist.nChanX * detlist.nChanY; - nc = detlist.nChipX * detlist.nChipY; - nd = detlist.nDacs; + setDetectorSpecificParameters(type, parameters); + nch = parameters.nChanX * parameters.nChanY; + nc = parameters.nChipX * parameters.nChipY; + nd = parameters.nDacs; } catch (...) { return nullptr; } @@ -575,18 +575,16 @@ int slsDetector::setDetectorType(detectorType const type) { // receiver if ((detector_shm()->receiverOnlineFlag == ONLINE_FLAG) && ret == OK) { fnum = F_GET_RECEIVER_TYPE; - ret = FAIL; - int arg = (int)detector_shm()->myDetectorType; + auto arg = static_cast(detector_shm()->myDetectorType); retval = GENERIC; - FILE_LOG(logDEBUG1) << "Sending detector type to Receiver: " - << (int)detector_shm()->myDetectorType; + FILE_LOG(logDEBUG1) << "Sending detector type to Receiver: " << arg; auto receiver = ReceiverSocket(detector_shm()->receiver_hostname, detector_shm()->receiverTCPPort); ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); FILE_LOG(logDEBUG1) << "Receiver Type: " << retval; if (ret == FORCE_UPDATE) { receiver.close(); // TODO! Should find a better solution - ret = updateCachedReceiverVariables(); + updateCachedReceiverVariables(); } } return retval; @@ -728,7 +726,7 @@ int slsDetector::setControlPort(int port_number) { } } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return detector_shm()->controlPort; } @@ -752,7 +750,7 @@ int slsDetector::setStopPort(int port_number) { } } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return detector_shm()->stopPort; } @@ -778,7 +776,7 @@ int slsDetector::setReceiverPort(int port_number) { } } if (ret == FORCE_UPDATE) { - ret = updateCachedReceiverVariables(); + updateCachedReceiverVariables(); } return detector_shm()->receiverTCPPort; } @@ -801,7 +799,7 @@ int slsDetector::lockServer(int lock) { FILE_LOG(logDEBUG1) << "Lock: " << retval; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return retval; } @@ -809,7 +807,7 @@ int slsDetector::lockServer(int lock) { std::string slsDetector::getLastClientIP() { int fnum = F_GET_LAST_CLIENT_IP; int ret = FAIL; - char retval[INET_ADDRSTRLEN] = {0}; + char retval[INET_ADDRSTRLEN]{}; FILE_LOG(logDEBUG1) << "Getting last client ip to detector server"; if (detector_shm()->onlineFlag == ONLINE_FLAG) { @@ -818,9 +816,9 @@ std::string slsDetector::getLastClientIP() { FILE_LOG(logDEBUG1) << "Last client IP to detector: " << retval; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } - return std::string(retval); + return retval; } int slsDetector::exitServer() { @@ -2438,7 +2436,7 @@ std::string slsDetector::getReceiverStreamingIP() { int slsDetector::setDetectorNetworkParameter(networkParameter index, int delay) { int fnum = F_SET_NETWORK_PARAMETER; int ret = FAIL; - int args[2] = {(int)index, delay}; + int args[2]{static_cast(index), delay}; int retval = -1; FILE_LOG(logDEBUG1) << "Setting network parameter index " << index << " to " << delay; @@ -2691,7 +2689,7 @@ int slsDetector::setUDPConnection() { int slsDetector::digitalTest(digitalTestMode mode, int ival) { int fnum = F_DIGITAL_TEST; int ret = FAIL; - int args[2] = {(int)mode, ival}; + int args[2]{static_cast(mode), ival}; int retval = -1; FILE_LOG(logDEBUG1) << "Sending digital test of mode " << mode << ", ival " << ival; @@ -2701,7 +2699,7 @@ int slsDetector::digitalTest(digitalTestMode mode, int ival) { FILE_LOG(logDEBUG1) << "Digital Test returned: " << retval; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return retval; } @@ -3007,7 +3005,7 @@ int slsDetector::activate(int const enable) { ret = receiver.sendCommandThenRead(fnum, &arg, sizeof(arg), &retval, sizeof(retval)); if (ret == FORCE_UPDATE) { receiver.close(); - ret = updateCachedReceiverVariables(); + updateCachedReceiverVariables(); } } return detector_shm()->activated; @@ -4315,18 +4313,23 @@ uint64_t slsDetector::setPatternWord(int addr, uint64_t word) { FILE_LOG(logDEBUG1) << "Set Pattern word: " << retval; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return retval; } int slsDetector::setPatternLoops(int level, int &start, int &stop, int &n) { + //TODO!(Erik) Should we change function signature to accept uint64_t? int fnum = F_SET_PATTERN; int ret = FAIL; - int mode = 1; // sets loop - uint64_t args[5] = {(uint64_t)mode, (uint64_t)level, (uint64_t)start, (uint64_t)stop, - (uint64_t)n}; - int retvals[3] = {0, 0, 0}; + uint64_t mode = 1; // sets loop + uint64_t args[5]{ + mode, + static_cast(level), + static_cast(start), + static_cast(stop), + static_cast(n)}; + int retvals[3]{}; FILE_LOG(logDEBUG1) << "Setting Pat Loops, level: " << level << ", start: " << start << ", stop: " << stop << ", n: " << n; @@ -4340,7 +4343,7 @@ int slsDetector::setPatternLoops(int level, int &start, int &stop, int &n) { n = retvals[2]; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return ret; } @@ -4361,7 +4364,7 @@ int slsDetector::setPatternWaitAddr(uint64_t level, uint64_t addr) { FILE_LOG(logDEBUG1) << "Set Pat Wait Addr: " << retval; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return retval; } @@ -4379,7 +4382,7 @@ uint64_t slsDetector::setPatternWaitTime(uint64_t level, uint64_t t) { FILE_LOG(logDEBUG1) << "Set Pat Wait Time: " << retval; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return retval; } @@ -4395,7 +4398,7 @@ int slsDetector::setPatternMask(uint64_t mask) { FILE_LOG(logDEBUG1) << "Pattern Mask successful"; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return ret; } @@ -4411,7 +4414,7 @@ uint64_t slsDetector::getPatternMask() { FILE_LOG(logDEBUG1) << "Pattern Mask:" << retval; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return retval; } @@ -4427,7 +4430,7 @@ int slsDetector::setPatternBitMask(uint64_t mask) { FILE_LOG(logDEBUG1) << "Pattern Bit Mask successful"; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return ret; } @@ -4443,7 +4446,7 @@ uint64_t slsDetector::getPatternBitMask() { FILE_LOG(logDEBUG1) << "Pattern Bit Mask:" << retval; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return retval; } @@ -4460,7 +4463,7 @@ int slsDetector::setLEDEnable(int enable) { FILE_LOG(logDEBUG1) << "LED Enable: " << retval; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return retval; } @@ -4468,7 +4471,7 @@ int slsDetector::setLEDEnable(int enable) { int slsDetector::setDigitalIODelay(uint64_t pinMask, int delay) { int fnum = F_DIGITAL_IO_DELAY; int ret = FAIL; - uint64_t args[2] = {pinMask, (uint64_t)delay}; + uint64_t args[2] = {pinMask, static_cast(delay)}; FILE_LOG(logDEBUG1) << "Sending Digital IO Delay, pin mask: " << std::hex << args[0] << ", delay: " << std::dec << args[1] << " ps"; @@ -4478,7 +4481,7 @@ int slsDetector::setDigitalIODelay(uint64_t pinMask, int delay) { FILE_LOG(logDEBUG1) << "Digital IO Delay successful"; } if (ret == FORCE_UPDATE) { - ret = updateDetector(); + updateDetector(); } return ret; } diff --git a/slsDetectorSoftware/tests/test-SharedMemory.cpp b/slsDetectorSoftware/tests/test-SharedMemory.cpp index f787d29a3..308e39760 100644 --- a/slsDetectorSoftware/tests/test-SharedMemory.cpp +++ b/slsDetectorSoftware/tests/test-SharedMemory.cpp @@ -126,4 +126,4 @@ TEST_CASE("Create several shared memories", "[detector]") { v[i].RemoveSharedMemory(); CHECK(v[i].IsExisting() == false); } -} \ No newline at end of file +} diff --git a/slsDetectorSoftware/tests/test-slsDetector.cpp b/slsDetectorSoftware/tests/test-slsDetector.cpp index 8d0b2ef77..0b8a20d01 100644 --- a/slsDetectorSoftware/tests/test-slsDetector.cpp +++ b/slsDetectorSoftware/tests/test-slsDetector.cpp @@ -19,7 +19,7 @@ TEST_CASE("Set and get trimen", "[detector]") { // At the beginning there should be no trimen set auto res = d.getTrimEn(); - CHECK(res.size() == 0); + CHECK(res.empty() == 0); std::vector energies{5200, 6400, 8500, 9900, 12000}; d.setTrimEn(energies); @@ -41,7 +41,7 @@ TEST_CASE("Set and get trimen", "[detector]") { // Setting trimen without arguments resets to zero d.setTrimEn(); - CHECK(d.getTrimEn().size() == 0); + CHECK(d.getTrimEn().empty()); // Clean up before next test d.freeSharedMemory(); diff --git a/slsReceiverSoftware/CMakeLists.txt b/slsReceiverSoftware/CMakeLists.txt index 75dabfc1c..f02689010 100644 --- a/slsReceiverSoftware/CMakeLists.txt +++ b/slsReceiverSoftware/CMakeLists.txt @@ -29,15 +29,16 @@ if (SLS_USE_HDF5) endif (SLS_USE_HDF5) -# include_directories( -# ${SLS_SUPPORT_LIB_INCLUDE_DIRS} -# ) - add_library(slsReceiverShared SHARED ${SOURCES} ${HEADERS} ) +check_ipo_supported(RESULT result) +if(result) + set_property(TARGET slsReceiverShared PROPERTY INTERPROCEDURAL_OPTIMIZATION True) +endif() + target_link_libraries(slsReceiverShared PUBLIC slsProjectOptions slsProjectWarnings diff --git a/slsSupportLib/CMakeLists.txt b/slsSupportLib/CMakeLists.txt index 4d7566044..ae44b93c6 100644 --- a/slsSupportLib/CMakeLists.txt +++ b/slsSupportLib/CMakeLists.txt @@ -39,6 +39,11 @@ add_library(slsSupportLib SHARED ${HEADERS} ) +check_ipo_supported(RESULT result) +if(result) + set_property(TARGET slsSupportLib PROPERTY INTERPROCEDURAL_OPTIMIZATION True) +endif() + target_include_directories(slsSupportLib PUBLIC ${ZeroMQ_INCLUDE_DIRS} "$"