From d9ed246ba8a9014b7da71ce93c9a542c63fa4f6a Mon Sep 17 00:00:00 2001 From: Tony Baltovski Date: Tue, 19 Nov 2024 17:54:27 -0500 Subject: [PATCH] Fixed linting. --- .clang-format | 14 ++++ .pre-commit-config.yaml | 143 ++++++++++++++++++++++++++++++++++++++++ CMakeLists.txt | 6 ++ src/marker_server.cpp | 63 ++++++++++++------ 4 files changed, 207 insertions(+), 19 deletions(-) create mode 100644 .clang-format create mode 100644 .pre-commit-config.yaml diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..9e92cf7 --- /dev/null +++ b/.clang-format @@ -0,0 +1,14 @@ +--- +Language: Cpp +BasedOnStyle: Google + +ColumnLimit: 100 +AccessModifierOffset: -2 +AlignAfterOpenBracket: AlwaysBreak +BreakBeforeBraces: Allman +ConstructorInitializerIndentWidth: 0 +ContinuationIndentWidth: 2 +DerivePointerAlignment: false +PointerAlignment: Middle +ReflowComments: true +IncludeBlocks: Preserve diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..d10126d --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,143 @@ + +# To use: +# +# pre-commit run -a +# +# Or: +# +# pre-commit install # (runs every time you commit in git) +# +# To update this file: +# +# pre-commit autoupdate +# +# See https://github.com/pre-commit/pre-commit + +repos: + # Standard hooks + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: check-added-large-files + - id: check-ast + - id: check-case-conflict + - id: check-docstring-first + - id: check-merge-conflict + - id: check-symlinks + - id: check-xml + - id: check-yaml + args: ["--allow-multiple-documents"] + - id: debug-statements + - id: end-of-file-fixer + - id: mixed-line-ending + - id: trailing-whitespace + exclude_types: [rst] + - id: fix-byte-order-marker + + + # Python hooks + - repo: https://github.com/asottile/pyupgrade + rev: v3.19.0 + hooks: + - id: pyupgrade + args: [--py36-plus] + + # PyDocStyle + - repo: https://github.com/PyCQA/pydocstyle + rev: 6.3.0 + hooks: + - id: pydocstyle + args: ["--ignore=D100,D101,D102,D103,D104,D105,D106,D107,D203,D212,D404"] + + - repo: https://github.com/psf/black + rev: 24.10.0 + hooks: + - id: black + args: ["--line-length=99"] + + - repo: https://github.com/pycqa/flake8 + rev: 7.1.1 + hooks: + - id: flake8 + args: ["--extend-ignore=E501"] + + # CPP hooks + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v19.1.3 + hooks: + - id: clang-format + args: ['-fallback-style=none', '-i'] + + - repo: local + hooks: + - id: ament_cppcheck + name: ament_cppcheck + description: Static code analysis of C/C++ files. + entry: env AMENT_CPPCHECK_ALLOW_SLOW_VERSIONS=1 ament_cppcheck + language: system + files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$ + + - repo: local + hooks: + - id: ament_cpplint + name: ament_cpplint + description: Static code analysis of C/C++ files. + entry: ament_cpplint + language: system + files: \.(h\+\+|h|hh|hxx|hpp|cuh|c|cc|cpp|cu|c\+\+|cxx|tpp|txx)$ + args: ["--linelength=100", "--filter=-whitespace/newline"] + + # Cmake hooks + - repo: local + hooks: + - id: ament_lint_cmake + name: ament_lint_cmake + description: Check format of CMakeLists.txt files. + entry: ament_lint_cmake + language: system + files: CMakeLists\.txt$ + + # Copyright + - repo: local + hooks: + - id: ament_copyright + name: ament_copyright + description: Check if copyright notice is available in all files. + entry: ament_copyright + language: system + exclude: .*/conf\.py$ + + # Docs - RestructuredText hooks + - repo: https://github.com/PyCQA/doc8 + rev: v1.1.2 + hooks: + - id: doc8 + args: ['--max-line-length=100', '--ignore=D001'] + exclude: CHANGELOG\.rst$ + + - repo: https://github.com/pre-commit/pygrep-hooks + rev: v1.10.0 + hooks: + - id: rst-backticks + exclude: CHANGELOG\.rst$ + - id: rst-directive-colons + - id: rst-inline-touching-normal + + # Spellcheck in comments and docs + # skipping of *.svg files is not working... + - repo: https://github.com/codespell-project/codespell + rev: v2.3.0 + hooks: + - id: codespell + args: ['--write-changes', '--uri-ignore-words-list=ist', '-L manuel'] + exclude: CHANGELOG\.rst|\.(svg|pyc|drawio)$ + + - repo: https://github.com/python-jsonschema/check-jsonschema + rev: 0.29.4 + hooks: + - id: check-github-workflows + args: ["--verbose"] + - id: check-github-actions + args: ["--verbose"] + - id: check-dependabot + args: ["--verbose"] \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 177b717..55010f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,13 @@ install(DIRECTORY if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) + list(APPEND AMENT_LINT_AUTO_EXCLUDE + ament_cmake_cpplint + ament_cmake_uncrustify + ) + set(ament_cmake_clang_format_CONFIG_FILE .clang-format) ament_lint_auto_find_test_dependencies() endif() + ament_package() \ No newline at end of file diff --git a/src/marker_server.cpp b/src/marker_server.cpp index add7bf6..4b37262 100644 --- a/src/marker_server.cpp +++ b/src/marker_server.cpp @@ -90,9 +90,12 @@ TwistServerNode::TwistServerNode() get_node_topics_interface(), get_node_services_interface())) { getParameters(); - if (use_stamped_msgs) { + if (use_stamped_msgs) + { vel_stamped_pub = create_publisher("cmd_vel", 1); - } else { + } + else + { vel_pub = create_publisher("cmd_vel", 1); } createInteractiveMarkers(); @@ -105,29 +108,41 @@ void TwistServerNode::getParameters() rclcpp::Parameter robot_name_param; rclcpp::Parameter use_stamped_msgs_param; - if (this->get_parameter("link_name", link_name_param)) { + if (this->get_parameter("link_name", link_name_param)) + { link_name = link_name_param.as_string(); - } else { + } + else + { link_name = "base_link"; } - if (this->get_parameter("robot_name", robot_name_param)) { + if (this->get_parameter("robot_name", robot_name_param)) + { robot_name = robot_name_param.as_string(); - } else { + } + else + { robot_name = "robot"; } - if (this->get_parameter("use_stamped_msgs", use_stamped_msgs_param)) { + if (this->get_parameter("use_stamped_msgs", use_stamped_msgs_param)) + { use_stamped_msgs = use_stamped_msgs_param.as_bool(); - } else { + } + else + { use_stamped_msgs = false; } // Ensure parameters are loaded correctly, otherwise, manually set values for linear config - if (this->get_parameters("linear_scale", linear_drive_scale_map)) { + if (this->get_parameters("linear_scale", linear_drive_scale_map)) + { this->get_parameters("max_positive_linear_velocity", max_positive_linear_velocity_map); this->get_parameters("max_negative_linear_velocity", max_negative_linear_velocity_map); - } else { + } + else + { linear_drive_scale_map["x"] = 1.0; max_positive_linear_velocity_map["x"] = 1.0; max_negative_linear_velocity_map["x"] = -1.0; @@ -150,7 +165,8 @@ void TwistServerNode::createInteractiveMarkers() control.orientation_mode = visualization_msgs::msg::InteractiveMarkerControl::FIXED; - if (linear_drive_scale_map.find("x") != linear_drive_scale_map.end()) { + if (linear_drive_scale_map.find("x") != linear_drive_scale_map.end()) + { control.orientation.w = 1; control.orientation.x = 1; control.orientation.y = 0; @@ -160,7 +176,8 @@ void TwistServerNode::createInteractiveMarkers() interactive_marker.controls.push_back(control); } - if (linear_drive_scale_map.find("y") != linear_drive_scale_map.end()) { + if (linear_drive_scale_map.find("y") != linear_drive_scale_map.end()) + { control.orientation.w = 1; control.orientation.x = 0; control.orientation.y = 0; @@ -170,7 +187,8 @@ void TwistServerNode::createInteractiveMarkers() interactive_marker.controls.push_back(control); } - if (linear_drive_scale_map.find("z") != linear_drive_scale_map.end()) { + if (linear_drive_scale_map.find("z") != linear_drive_scale_map.end()) + { control.orientation.w = 1; control.orientation.x = 0; control.orientation.y = 1; @@ -208,27 +226,33 @@ void TwistServerNode::processFeedback( vel_msg.angular.z = std::min(vel_msg.angular.z, max_angular_velocity); vel_msg.angular.z = std::max(vel_msg.angular.z, -max_angular_velocity); - if (linear_drive_scale_map.find("x") != linear_drive_scale_map.end()) { + if (linear_drive_scale_map.find("x") != linear_drive_scale_map.end()) + { vel_msg.linear.x = linear_drive_scale_map["x"] * feedback->pose.position.x; vel_msg.linear.x = std::min(vel_msg.linear.x, max_positive_linear_velocity_map["x"]); vel_msg.linear.x = std::max(vel_msg.linear.x, max_negative_linear_velocity_map["x"]); } - if (linear_drive_scale_map.find("y") != linear_drive_scale_map.end()) { + if (linear_drive_scale_map.find("y") != linear_drive_scale_map.end()) + { vel_msg.linear.y = linear_drive_scale_map["y"] * feedback->pose.position.y; vel_msg.linear.y = std::min(vel_msg.linear.y, max_positive_linear_velocity_map["y"]); vel_msg.linear.y = std::max(vel_msg.linear.y, max_negative_linear_velocity_map["y"]); } - if (linear_drive_scale_map.find("z") != linear_drive_scale_map.end()) { + if (linear_drive_scale_map.find("z") != linear_drive_scale_map.end()) + { vel_msg.linear.z = linear_drive_scale_map["z"] * feedback->pose.position.z; vel_msg.linear.z = std::min(vel_msg.linear.z, max_positive_linear_velocity_map["z"]); vel_msg.linear.z = std::max(vel_msg.linear.z, max_negative_linear_velocity_map["z"]); } - if (use_stamped_msgs) { + if (use_stamped_msgs) + { stampAndPublish(vel_msg); - } else { + } + else + { vel_pub->publish(vel_msg); } @@ -237,7 +261,8 @@ void TwistServerNode::processFeedback( server->applyChanges(); } -void TwistServerNode::stampAndPublish(geometry_msgs::msg::Twist &msg) { +void TwistServerNode::stampAndPublish(geometry_msgs::msg::Twist &msg) +{ geometry_msgs::msg::TwistStamped stamped_msg; stamped_msg.twist = msg;