feat(pointcloud_preprocessor): support 3d distortion corrector for distortion corrector node #7027
CodeScene PR Check
❌ Code Health Quality Gates: FAILED
- Declining Code Health: 173 findings(s) 🚩
- Improving Code Health: 54 findings(s) ✅
- Affected Hotspots: 11 files(s) 🔥
Details
🚩 Declining Code Health (highest to lowest):
- Complex Method python_simulator.py: slalom_drive
- Complex Method pympc_trajectory_follower.py: PyMPCTrajectoryFollower.control
- Complex Method drive_controller.py: init
- Large Method control.launch.py: launch_setup
- Low Cohesion drive_functions.py
- Complex Conditional goal_planner_module.cpp: GoalPlannerModule::onFreespaceParkingTimer 🔥
- Low Cohesion train_drive_NN_model.py
- Brain Method train_drive_NN_model.py: polynomial_regression
- Brain Method train_drive_NN_model.py: train_model
- Complex Conditional python_simulator.py: slalom_drive
- Complex Method run_sim.py: run_simulator
- Complex Method map_based_prediction_node.cpp: MapBasedPredictionNode::objectsCallback 🔥
- Bumpy Road Ahead pympc_trajectory_follower.py: PyMPCTrajectoryFollower.control
- Large Method pympc_trajectory_follower.py: PyMPCTrajectoryFollower.init
- Deep, Nested Complexity drive_controller.py: update_input_queue
- Complex Conditional goal_planner_module.cpp: GoalPlannerModule::onTimer 🔥
- Complex Method add_training_data_from_csv.py: add_data_from_csv.add_data_from_csv
- Code Duplication drive_iLQR.py
- Complex Method distortion_corrector.cpp: DistortionCorrectorComponent::undistortPointCloud
- Large Method vehicle_cmd_gate.cpp: VehicleCmdGate::VehicleCmdGate
- Complex Method drive_controller.py: update_input_queue
- Complex Method drive_controller.py: get_optimal_control
- Complex Method drive_iLQR.py: compute_optimal_control
- Large Method drive_iLQR.py: compute_iLQR_coef
- Complex Method turn_signal_decider.cpp: TurnSignalDecider::getBehaviorTurnSignalInfo
- Complex Method python_simulator.py: create_straight_line_test_csv
- Bumpy Road Ahead map_based_prediction_node.cpp: MapBasedPredictionNode::objectsCallback 🔥
- Complex Method drive_functions.py: calc_cost
- Complex Method drive_functions.py: transform_Q_R
- Code Duplication mission_details_display.cpp
- Lines of Code in a Single File python_simulator.py
- Overall Code Complexity python_simulator.py
- Deep, Nested Complexity python_simulator.py: accel_map_f
- Deep, Nested Complexity run_sim.py: run_simulator
- Lines of Code in a Single File drive_controller.py
- Overall Code Complexity drive_controller.py
- Lines of Code in a Single File drive_functions.py
- Overall Code Complexity drive_functions.py
- Code Duplication drive_functions.py
- Deep, Nested Complexity drive_functions.py: calc_limits
- Lines of Code in a Single File pympc_trajectory_follower.py
- Overall Code Complexity pympc_trajectory_follower.py
- Deep, Nested Complexity pympc_trajectory_follower.py: PyMPCTrajectoryFollower.control
- Overall Code Complexity add_training_data_from_csv.py
- Code Duplication train_drive_NN_model.py
- Complex Conditional low_intensity_cluster_filter.cpp: LowIntensityClusterFilter::objectCallback
- Code Duplication distortion_corrector.cpp
- Bumpy Road Ahead distortion_corrector.cpp: DistortionCorrectorComponent::undistortPointCloud
- Overall Code Complexity distortion_corrector.cpp
- Deep, Nested Complexity distortion_corrector.cpp: DistortionCorrectorComponent::undistortPointCloud
- Complex Method start_planner_module.cpp: StartPlannerModule::isPreventingRearVehicleFromPassingThrough 🔥
- Complex Method train_drive_NN_model.py: polynomial_regression
- Large Method map_based_prediction_node.cpp: MapBasedPredictionNode::MapBasedPredictionNode 🔥
- Large Method ransac_ground_filter_nodelet.cpp: RANSACGroundFilterComponent::filter
- Bumpy Road Ahead drive_controller.py: update_input_queue
- Deep, Nested Complexity drive_controller.py: get_optimal_control
- Bumpy Road Ahead python_simulator.py: slalom_drive
- Large Method proxima_calc.cpp: error_prediction_with_diff
- Complex Method planner_manager.cpp: PlannerManager::run 🔥
- Large Method multi_lidar_pointcloud_based_occupancy_grid_map.launch.py: launch_setup
- Complex Method train_drive_NN_model.py: train_model
- Complex Method drive_functions.py: calc_cost_only_for_states
- Large Method drive_functions.py: calc_limits
- Large Method occupancy_grid_map_outlier_filter_nodelet.cpp: OccupancyGridMapOutlierFilterComponent::onOccupancyGridMapAndPointCloud2
- Large Method test_static_centerline_generator.test.py: generate_test_description
- Complex Method node.cpp: PathSampler::generateCandidatesFromPreviousPath
- Complex Method goal_searcher.cpp: GoalSearcher::search
- Complex Method scene.cpp: NormalLaneChange::get_current_turn_signal_info 🔥
- Complex Method scene.cpp: NormalLaneChange::filterObjectsByLanelets 🔥
- Complex Method start_planner_module.cpp: StartPlannerModule::updateData 🔥
- Complex Conditional overlay_utils.cpp: OverlayObject::updateTextureSize
- Complex Method remaining_distance_time_display.cpp: RemainingDistanceTimeDisplay::drawRemainingDistanceTimeDisplay
- Complex Method main.cpp: schedule
- Missing Arguments Abstractions python_simulator.py
- Missing Arguments Abstractions drive_NN.py
- Missing Arguments Abstractions drive_controller.py
- Missing Arguments Abstractions drive_functions.py
- Missing Arguments Abstractions drive_iLQR.py
- Complex Method drive_mppi.py: drive_mppi.proceed_mppi_step
- Primitive Obsession proxima_calc.cpp
- Excess Number of Function Arguments proxima_calc.cpp: set_params
- Complex Conditional pympc_trajectory_follower.py: PyMPCTrajectoryFollower.control
- Deep, Nested Complexity train_drive_NN_model.py: train_model
- Deep, Nested Complexity train_drive_NN_model.py: polynomial_regression
- Missing Arguments Abstractions train_drive_NN_model.py
- Complex Conditional tree_structured_parzen_estimator.cpp: TreeStructuredParzenEstimator::log_gaussian_pdf
- Complex Method low_intensity_cluster_filter.cpp: LowIntensityClusterFilter::objectCallback
- Excess Number of Function Arguments goal_planner_module.cpp: GoalPlannerModule::GoalPlannerData::update 🔥
- Excess Number of Function Arguments path_shifter.cpp: PathShifter::getBaseLengthsWithoutAccelLimit
- Complex Method scene.cpp: NormalLaneChange::filterObjects 🔥
- Complex Method map_based_prediction_node.cpp: removeOldObjectsHistory 🔥
- Complex Method occlusion_spot_utils.cpp: calcSlowDownPointsForPossibleCollision
- Complex Method node.cpp: AEB::checkCollision
- Bumpy Road Ahead python_simulator.py: get_current_additional_sine
- Excess Number of Function Arguments drive_controller.py: init
- Complex Method map_based_prediction_node.cpp: MapBasedPredictionNode::tryMatchNewObjectToDisappeared 🔥
- Bumpy Road Ahead drive_controller.py: get_optimal_control
- Bumpy Road Ahead drive_controller.py: update_model
- Complex Method path_shifter.cpp: PathShifter::generate
- Bumpy Road Ahead node.cpp: PathSampler::generateCandidatesFromPreviousPath
- Complex Conditional python_simulator.py: create_additional_sine_data
- Bumpy Road Ahead python_simulator.py: accel_map_f
- Bumpy Road Ahead drive_functions.py: calc_limits
- Bumpy Road Ahead drive_functions.py: transform_Q_R
- Bumpy Road Ahead drive_functions.py: calc_cost
- Bumpy Road Ahead run_sim.py: run_simulator
- Bumpy Road Ahead drive_mppi.py: drive_mppi.proceed_mppi_step
- Bumpy Road Ahead proxima_calc.cpp: get_polynomial_features
- Bumpy Road Ahead proxima_calc.cpp: get_polynomial_features_with_diff
- Bumpy Road Ahead add_training_data_from_csv.py: add_data_from_csv.add_data_from_csv
- Bumpy Road Ahead train_drive_NN_model.py: train_model
- Bumpy Road Ahead train_drive_NN_model.py: get_trained_model
- Bumpy Road Ahead train_drive_NN_model.py: update_trained_model
- Bumpy Road Ahead train_drive_NN_model.py: update_saved_trained_model
- Bumpy Road Ahead train_drive_NN_model.py: polynomial_regression
- Bumpy Road Ahead freespace_planner_node.cpp: FreespacePlannerNode::onTimer
- Excess Number of Function Arguments drive_iLQR.py: compute_iLQR_coef
- Bumpy Road Ahead map_based_prediction_node.cpp: removeOldObjectsHistory 🔥
- Excess Number of Function Arguments drive_NN.py: DriveNeuralNetwork.init
- Excess Number of Function Arguments drive_NN.py: transform_model_to_c.init
- Bumpy Road Ahead ray_ground_filter_nodelet.cpp: RayGroundFilterComponent::ExtractPointsIndices
- Bumpy Road Ahead drive_functions.py: calc_cost_only_for_states
- Excess Number of Function Arguments drive_GP.py: get_pred
- Excess Number of Function Arguments drive_GP.py: get_pred_deviations
- Excess Number of Function Arguments drive_GP.py: get_pred_deviation
- Excess Number of Function Arguments python_simulator.py: slalom_drive
- Excess Number of Function Arguments drive_controller.py: update_input_queue_and_get_optimal_control
- Excess Number of Function Arguments drive_mppi.py: drive_mppi.init
- Excess Number of Function Arguments drive_mppi.py: generate_input_perturbation
- Excess Number of Function Arguments drive_mppi.py: drive_mppi.calc_forward_trajectories_with_cost
- Excess Number of Function Arguments drive_mppi.py: drive_mppi.proceed_mppi_step
- Excess Number of Function Arguments drive_mppi.py: drive_mppi.compute_optimal_control
- Excess Number of Function Arguments drive_NN.py: loss_fn_plus_tanh
- Excess Number of Function Arguments train_drive_NN_model.py: get_trained_model
- Excess Number of Function Arguments train_drive_NN_model.py: update_saved_trained_model
- Excess Number of Function Arguments drive_iLQR.py: compute_optimal_control
- Excess Number of Function Arguments train_drive_NN_model.py: update_trained_model
- Excess Number of Function Arguments python_simulator.py: pure_pursuit
- Excess Number of Function Arguments train_drive_NN_model.py: polynomial_regression
- Excess Number of Function Arguments python_simulator.py: f_sim
- Excess Number of Function Arguments python_simulator.py: F_true_predict
- Excess Number of Function Arguments python_simulator.py: create_additional_sine_data
- Excess Number of Function Arguments python_simulator.py: get_current_additional_sine
- Excess Number of Function Arguments train_drive_NN_model.py: init
- Excess Number of Function Arguments train_drive_NN_model.py: train_model
- Excess Number of Function Arguments train_drive_NN_model.py: get_polynomial_regression_result
- Excess Number of Function Arguments drive_functions.py: calc_limits
- Excess Number of Function Arguments drive_functions.py: F_with_model_initial_diff
- Excess Number of Function Arguments drive_functions.py: F_with_model_diff
- Excess Number of Function Arguments drive_functions.py: F_with_model_for_candidates
- Excess Number of Function Arguments train_drive_NN_model.py: sim
- Excess Number of Function Arguments python_simulator.py: F_sim
- Excess Number of Function Arguments drive_functions.py: F_with_history_and_diff
- Excess Number of Function Arguments drive_functions.py: F_with_history_for_candidates
- Excess Number of Function Arguments drive_iLQR.py: sparse_right_action_for_state_diff
- Excess Number of Function Arguments drive_iLQR.py: sparse_left_action_for_state_diff
- Excess Number of Function Arguments drive_iLQR.py: vector_sparse_left_action_for_state_diff
- Excess Number of Function Arguments drive_iLQR.py: calc_line_search_candidates
- Excess Number of Function Arguments python_simulator.py: create_straight_line_test_csv
- Excess Number of Function Arguments drive_functions.py: F_with_history
- Excess Number of Function Arguments drive_functions.py: u_cut_off
- Excess Number of Function Arguments drive_iLQR.py: init
- Excess Number of Function Arguments drive_iLQR.py: calc_forward_trajectories_with_cost
- Excess Number of Function Arguments train_drive_NN_model.py: predict_error
- Excess Number of Function Arguments drive_functions.py: sg_filter
- Excess Number of Function Arguments drive_functions.py: calc_cost
- Excess Number of Function Arguments drive_functions.py: f_init
- Excess Number of Function Arguments drive_functions.py: F_init
- Excess Number of Function Arguments drive_functions.py: F_multiple
- Excess Number of Function Arguments drive_functions.py: F_init_with_diff
- Excess Number of Function Arguments drive_functions.py: F_multiple_with_diff
- Excess Number of Function Arguments drive_functions.py: f_init_for_candidates
- Excess Number of Function Arguments drive_functions.py: F_multiple_for_candidates
✅ Improving Code Health:
- Code Duplication route_handler.cpp 🔥
- Complex Method scan_ground_filter_nodelet.cpp: ScanGroundFilterComponent::classifyPointCloudGridScan
- Complex Method shift_pull_over.cpp: ShiftPullOver::generatePullOverPath
- Overall Code Complexity scan_ground_filter_nodelet.cpp
- Lines of Code in a Single File scene.cpp 🔥
- Overall Code Complexity scene.cpp 🔥
- Overall Code Complexity scene.cpp 🔥
- Overall Code Complexity utils.cpp 🔥
- Lines of Code in a Single File utils.cpp 🔥
- Overall Code Complexity utils.cpp 🔥
- Overall Code Complexity grid_utils.cpp
- Overall Code Complexity mission_planner.cpp
- Lines of Code in a Single File route_handler.cpp 🔥
- Overall Code Complexity node.cpp
- Large Method debug.cpp: createDebugMarkerArray
- Complex Method mission_planner.cpp: MissionPlanner::on_set_waypoint_route
- Complex Method mission_planner.cpp: MissionPlanner::on_set_lanelet_route
- Complex Method node.cpp: PathSampler::generatePath
- Complex Method scene.cpp: NormalLaneChange::filterObject 🔥
- Large Method ndt_scan_matcher_core.cpp: NDTScanMatcher::align_pose
- Complex Method scene.cpp: AvoidanceModule::insertPrepareVelocity 🔥
- Complex Method goal_planner_module.cpp: GoalPlannerModule::updateData 🔥
- Complex Method map_based_prediction_node.cpp: MapBasedPredictionNode::removeOldObjectsHistory 🔥
- Complex Method scene.cpp: NormalLaneChange::isLaneChangePathSafe 🔥
- Primitive Obsession debug.cpp
- Primitive Obsession utils.cpp 🔥
- Primitive Obsession utils.cpp 🔥
- Number of Functions in a Single Module route_handler.cpp 🔥
- Complex Method route_handler.cpp: RouteHandler::getCheckTargetLanesFromPath 🔥
- Complex Method route_handler.cpp: RouteHandler::getRelation 🔥
- Complex Method route_handler.cpp: RouteHandler::getLaneChangeableDistance 🔥
- Complex Method route_handler.cpp: RouteHandler::getFurthestLinestring 🔥
- Bumpy Road Ahead node.cpp: PathSampler::generatePath
- Bumpy Road Ahead scene.cpp: NormalLaneChange::filterObject 🔥
- Complex Method scene.cpp: AvoidanceModule::fillEgoStatus 🔥
- Complex Method scene.cpp: AvoidanceModule::isSatisfiedSuccessCondition 🔥
- Bumpy Road Ahead map_based_prediction_node.cpp: MapBasedPredictionNode::removeOldObjectsHistory 🔥
- Complex Method interface.cpp: LaneChangeInterface::getCurrentTurnSignalInfo 🔥
- Complex Conditional scene.cpp: NormalLaneChange::filterObject 🔥
- Bumpy Road Ahead goal_planner_module.cpp: GoalPlannerModule::isCrossingPossible 🔥
- Complex Method tree_structured_parzen_estimator.cpp: TreeStructuredParzenEstimator::get_next_input
- Complex Method scene.cpp: SideShiftModule::updateData
- Complex Method grid_utils.cpp: toQuantizedImage
- Complex Method grid_utils.cpp: isCollisionFree
- Bumpy Road Ahead route_handler.cpp: RouteHandler::getCheckTargetLanesFromPath 🔥
- Bumpy Road Ahead route_handler.cpp: RouteHandler::getLaneChangeableDistance 🔥
- Bumpy Road Ahead grid_utils.cpp: isCollisionFree
- Bumpy Road Ahead tree_structured_parzen_estimator.cpp: TreeStructuredParzenEstimator::get_next_input
- Overall Code Complexity tree_structured_parzen_estimator.cpp
- Bumpy Road Ahead path_generator.cpp: PathGenerator::generatePathForCrosswalkUser
- Bumpy Road Ahead occupancy_grid_map_outlier_filter_nodelet.cpp: OccupancyGridMapOutlierFilterComponent::splitPointCloudFrontBack
- Complex Conditional interface.cpp: LaneChangeInterface::getCurrentTurnSignalInfo 🔥
- Deep, Nested Complexity grid_utils.cpp: isCollisionFree
- Deep, Nested Complexity node.cpp: PathSampler::generatePath
Annotations
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
❌ New issue: Code Duplication
The module contains 2 functions with similar structure: DistortionCorrectorComponent::getTransform,DistortionCorrectorComponent::getTransform. Avoid duplicated, aka copy-pasted, code inside the module. More duplication lowers the code health.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
❌ Getting worse: Complex Method
DistortionCorrectorComponent::undistortPointCloud increases in cyclomatic complexity from 23 to 29, threshold = 9. This function has many conditional statements (e.g. if, for, while), leading to lower code health. Avoid adding more conditionals and code to it without refactoring.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
❌ Getting worse: Bumpy Road Ahead
DistortionCorrectorComponent::undistortPointCloud increases from 2 to 6 logical blocks with deeply nested code, threshold is one single block per function. The Bumpy Road code smell is a function that contains multiple chunks of nested conditional logic. The deeper the nesting and the more bumps, the lower the code health.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
❌ New issue: Overall Code Complexity
This module has a mean cyclomatic complexity of 7.00 across 7 functions. The mean complexity threshold is 4. This file has many conditional statements (e.g. if, for, while) across its implementation, leading to lower code health. Avoid adding more conditionals.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
❌ New issue: Deep, Nested Complexity
DistortionCorrectorComponent::undistortPointCloud has a nested complexity depth of 4, threshold = 4. This function contains deeply nested logic such as if statements and/or loops. The deeper the nesting, the lower the code health.
Check notice on line 568 in planning/behavior_path_avoidance_module/src/debug.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Large Method
createDebugMarkerArray decreases from 113 to 110 lines of code, threshold = 70. Large functions with many lines of code are generally harder to understand and lower the code health. Avoid adding more lines to this function.
Check notice on line 1 in planning/behavior_path_avoidance_module/src/debug.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Primitive Obsession
The ratio of primitive types in function arguments decreases from 45.45% to 43.18%, threshold = 30.0%. The functions in this file have too many primitive types (e.g. int, double, float) in their function argument lists. Using many primitive types lead to the code smell Primitive Obsession. Avoid adding more primitive arguments.
Check notice on line 1 in planning/behavior_path_avoidance_module/src/scene.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Lines of Code in a Single File
The lines of code decreases from 1242 to 1241, improve code health by reducing it to 1000. The number of Lines of Code in a single file. More Lines of Code lowers the code health.
Check notice on line 1692 in planning/behavior_path_avoidance_module/src/scene.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Complex Method
AvoidanceModule::insertPrepareVelocity decreases in cyclomatic complexity from 18 to 17, threshold = 9. This function has many conditional statements (e.g. if, for, while), leading to lower code health. Avoid adding more conditionals and code to it without refactoring.
Check notice on line 516 in planning/behavior_path_avoidance_module/src/scene.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Complex Method
AvoidanceModule::fillEgoStatus decreases in cyclomatic complexity from 10 to 9, threshold = 9. This function has many conditional statements (e.g. if, for, while), leading to lower code health. Avoid adding more conditionals and code to it without refactoring.
Check notice on line 122 in planning/behavior_path_avoidance_module/src/scene.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Complex Method
AvoidanceModule::isSatisfiedSuccessCondition decreases in cyclomatic complexity from 10 to 9, threshold = 9. This function has many conditional statements (e.g. if, for, while), leading to lower code health. Avoid adding more conditionals and code to it without refactoring.
Check notice on line 1 in planning/behavior_path_avoidance_module/src/scene.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Overall Code Complexity
The mean cyclomatic complexity decreases from 5.29 to 5.19, threshold = 4. This file has many conditional statements (e.g. if, for, while) across its implementation, leading to lower code health. Avoid adding more conditionals.
Check notice on line 1 in planning/behavior_path_avoidance_module/src/utils.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
ℹ Getting worse: Lines of Code in a Single File
The lines of code increases from 1791 to 1793, improve code health by reducing it to 1000. The number of Lines of Code in a single file. More Lines of Code lowers the code health.
Check notice on line 311 in planning/mission_planner/src/mission_planner/mission_planner.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Complex Method
MissionPlanner::on_set_waypoint_route decreases in cyclomatic complexity from 19 to 18, threshold = 9. This function has many conditional statements (e.g. if, for, while), leading to lower code health. Avoid adding more conditionals and code to it without refactoring.
Check notice on line 263 in planning/mission_planner/src/mission_planner/mission_planner.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Complex Method
MissionPlanner::on_set_lanelet_route decreases in cyclomatic complexity from 19 to 18, threshold = 9. This function has many conditional statements (e.g. if, for, while), leading to lower code health. Avoid adding more conditionals and code to it without refactoring.
Check notice on line 1 in planning/mission_planner/src/mission_planner/mission_planner.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Overall Code Complexity
The mean cyclomatic complexity decreases from 4.95 to 4.67, threshold = 4. This file has many conditional statements (e.g. if, for, while) across its implementation, leading to lower code health. Avoid adding more conditionals.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
❌ New issue: Large Method
launch_setup has 81 lines, threshold = 70. Large functions with many lines of code are generally harder to understand and lower the code health. Avoid adding more lines to this function.
Check notice on line 1 in planning/behavior_path_planner_common/src/utils/path_utils.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
ℹ Getting worse: Overall Code Complexity
The mean cyclomatic complexity increases from 5.00 to 5.11, threshold = 4. This file has many conditional statements (e.g. if, for, while) across its implementation, leading to lower code health. Avoid adding more conditionals.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
❌ Getting worse: Complex Method
PathShifter::generate increases in cyclomatic complexity from 10 to 11, threshold = 9. This function has many conditional statements (e.g. if, for, while), leading to lower code health. Avoid adding more conditionals and code to it without refactoring.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
ℹ Getting worse: Primitive Obsession
The ratio of primitive types in function arguments increases from 72.00% to 74.36%, threshold = 30.0%. The functions in this file have too many primitive types (e.g. int, double, float) in their function argument lists. Using many primitive types lead to the code smell Primitive Obsession. Avoid adding more primitive arguments.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
❌ New issue: Excess Number of Function Arguments
PathShifter::getBaseLengthsWithoutAccelLimit has 6 arguments, threshold = 4. This function has too many arguments, indicating a lack of encapsulation. Avoid adding more arguments.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
❌ New issue: Large Method
OccupancyGridMapOutlierFilterComponent::onOccupancyGridMapAndPointCloud2 has 74 lines, threshold = 70. Large functions with many lines of code are generally harder to understand and lower the code health. Avoid adding more lines to this function.
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ No longer an issue: Bumpy Road Ahead
OccupancyGridMapOutlierFilterComponent::splitPointCloudFrontBack is no longer above the threshold for logical blocks with deeply nested code
Check notice on line 1 in planning/behavior_path_lane_change_module/src/scene.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
ℹ Getting worse: Lines of Code in a Single File
The lines of code increases from 1658 to 1750, improve code health by reducing it to 1000. The number of Lines of Code in a single file. More Lines of Code lowers the code health.
Check notice on line 2043 in planning/behavior_path_lane_change_module/src/scene.cpp
codescene-delta-analysis / CodeScene Cloud Delta Analysis (main)
✅ Getting better: Complex Method
NormalLaneChange::isLaneChangePathSafe decreases in cyclomatic complexity from 12 to 10, threshold = 9. This function has many conditional statements (e.g. if, for, while), leading to lower code health. Avoid adding more conditionals and code to it without refactoring.