Open source simulator for autonomous vehicles built on Unreal Engine / Unity, from Microsoft AI & Research
This report summarizes scanner evidence for microsoft/AirSim, a C++ project with 18,586 GitHub stars. SynthScan examined 201,088 lines of code across 807 source files, recording 841 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 3.5 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 663 finding(s).
Are imports declared and package/API names verified? 174 finding(s).
Are wrappers, guards, and repeated structures necessary? 22 finding(s).
Which changes need focused human review? 841 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 841 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Unity/AirLibWrapper/AirsimWrapper/Source/PawnSimApi.h | 1 | #pragma once | COMMENT |
| LOW | …/Source/Vehicles/Multirotor/SimModeWorldMultiRotor.cpp | 41 | //setup clock in ClockFactory | COMMENT |
| LOW | ros/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h | 1 | #include "common/common_utils/StrictMode.hpp" | COMMENT |
| LOW | ros/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h | 21 | #include <airsim_ros_pkgs/Land.h> | COMMENT |
| LOW | ros/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h | 41 | #include <nav_msgs/Odometry.h> | COMMENT |
| LOW | ros/src/airsim_ros_pkgs/include/airsim_ros_wrapper.h | 81 | { | COMMENT |
| LOW | …s/src/airsim_ros_pkgs/include/airsim_settings_parser.h | 1 | #include "common/common_utils/StrictMode.hpp" | COMMENT |
| LOW | …irsim_ros_pkgs/include/pd_position_controller_simple.h | 1 | #ifndef _PID_POSITION_CONTROLLER_SIMPLE_H_ | COMMENT |
| LOW | HelloDrone/main.cpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | GazeboDrone/src/main.cpp | 21 | #include <gazebo/transport/transport.hh> | COMMENT |
| LOW | HelloSpawnedDrones/HelloSpawnedDrones.cpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/sensors/gps/GpsSimple.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/sensors/distance/DistanceSimple.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | …ib/include/sensors/magnetometer/MagnetometerSimple.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/sensors/barometer/BarometerSimple.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/safety/SafetyEval.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/common/Settings.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/common/AirSimSettings.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/common/WorkerThread.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/common/StateReporterWrapper.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/common/Common.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | …rLib/include/common/common_utils/ScheduledExecutor.hpp | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. | COMMENT |
| LOW | AirLib/include/common/common_utils/prettyprint.hpp | 1 | // Copyright Louis Delacroix 2010 - 2014. | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 41 | COMMENT | |
| LOW | AirLib/include/common/common_utils/json.hpp | 61 | COMMENT | |
| LOW | AirLib/include/common/common_utils/json.hpp | 201 | #if defined(JSON_HEDLEY_STRINGIFY_EX) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 221 | #if defined(JSON_HEDLEY_CONCAT3_EX) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 241 | #if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 261 | #undef JSON_HEDLEY_GNUC_VERSION_CHECK | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 281 | #undef JSON_HEDLEY_MSVC_VERSION_CHECK | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 301 | COMMENT | |
| LOW | AirLib/include/common/common_utils/json.hpp | 321 | #if defined(JSON_HEDLEY_INTEL_CL_VERSION) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 341 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 361 | #else | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 381 | #if defined(JSON_HEDLEY_ARM_VERSION) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 401 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 421 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 441 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 461 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 481 | COMMENT | |
| LOW | AirLib/include/common/common_utils/json.hpp | 501 | #if defined(JSON_HEDLEY_TI_CL6X_VERSION) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 521 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 541 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 561 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 581 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 601 | COMMENT | |
| LOW | AirLib/include/common/common_utils/json.hpp | 621 | #if defined(JSON_HEDLEY_COMPCERT_VERSION) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 641 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 681 | #if defined(JSON_HEDLEY_GCC_VERSION_CHECK) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 701 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 721 | #if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 741 | (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 761 | #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 781 | #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 801 | COMMENT | |
| LOW | AirLib/include/common/common_utils/json.hpp | 821 | #undef JSON_HEDLEY_HAS_EXTENSION | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 841 | #if defined(__has_extension) | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 861 | #else | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 881 | #endif | COMMENT |
| LOW | AirLib/include/common/common_utils/json.hpp | 921 | #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) | COMMENT |
| 559 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …rsim_tutorial_pkgs/scripts/multi_drone_json_creator.py | 4 | CODE | |
| LOW | PythonClient/multirotor/external_physics_engine.py | 1 | CODE | |
| LOW | PythonClient/multirotor/set_fog.py | 1 | CODE | |
| LOW | PythonClient/multirotor/pause_continue_drone.py | 1 | CODE | |
| LOW | PythonClient/multirotor/line_of_sight.py | 1 | CODE | |
| LOW | PythonClient/multirotor/line_of_sight.py | 4 | CODE | |
| LOW | PythonClient/multirotor/line_of_sight.py | 5 | CODE | |
| LOW | PythonClient/multirotor/line_of_sight.py | 6 | CODE | |
| LOW | PythonClient/multirotor/line_of_sight.py | 7 | CODE | |
| LOW | PythonClient/multirotor/line_of_sight.py | 8 | CODE | |
| LOW | PythonClient/multirotor/survey.py | 1 | CODE | |
| LOW | PythonClient/multirotor/disarm.py | 1 | CODE | |
| LOW | PythonClient/multirotor/add_drone.py | 1 | CODE | |
| LOW | PythonClient/multirotor/add_drone.py | 5 | CODE | |
| LOW | PythonClient/multirotor/add_drone.py | 6 | CODE | |
| LOW | PythonClient/multirotor/set_trace_line.py | 14 | CODE | |
| LOW | PythonClient/multirotor/box.py | 1 | CODE | |
| LOW | PythonClient/multirotor/box.py | 4 | CODE | |
| LOW | PythonClient/multirotor/point_cloud.py | 2 | CODE | |
| LOW | PythonClient/multirotor/point_cloud.py | 6 | CODE | |
| LOW | PythonClient/multirotor/manual_mode_demo.py | 4 | CODE | |
| LOW | PythonClient/multirotor/manual_mode_demo.py | 7 | CODE | |
| LOW | PythonClient/multirotor/manual_mode_demo.py | 8 | CODE | |
| LOW | PythonClient/multirotor/teleport.py | 1 | CODE | |
| LOW | PythonClient/multirotor/opencv_show.py | 4 | CODE | |
| LOW | PythonClient/multirotor/orbit.py | 1 | CODE | |
| LOW | PythonClient/multirotor/drone_stress_test.py | 1 | CODE | |
| LOW | PythonClient/multirotor/stability_test.py | 2 | CODE | |
| LOW | PythonClient/multirotor/stability_test.py | 6 | CODE | |
| LOW | PythonClient/multirotor/navigate.py | 3 | CODE | |
| LOW | PythonClient/multirotor/navigate.py | 9 | CODE | |
| LOW | PythonClient/multirotor/navigate.py | 11 | CODE | |
| LOW | PythonClient/multirotor/hello_drone.py | 1 | CODE | |
| LOW | PythonClient/multirotor/multi_agent_drone.py | 6 | CODE | |
| LOW | PythonClient/multirotor/takeoff.py | 1 | CODE | |
| LOW | PythonClient/multirotor/reset_test_drone.py | 1 | CODE | |
| LOW | PythonClient/multirotor/drone_lidar.py | 4 | CODE | |
| LOW | PythonClient/multirotor/drone_lidar.py | 8 | CODE | |
| LOW | PythonClient/multirotor/arm.py | 1 | CODE | |
| LOW | …thonClient/multirotor/vehicleframe_lidar_pointcloud.py | 53 | CODE | |
| LOW | …thonClient/multirotor/vehicleframe_lidar_pointcloud.py | 55 | CODE | |
| LOW | PythonClient/multirotor/clock_speed.py | 1 | CODE | |
| LOW | PythonClient/multirotor/set_wind.py | 1 | CODE | |
| LOW | PythonClient/multirotor/gimbal.py | 1 | CODE | |
| LOW | PythonClient/multirotor/path.py | 1 | CODE | |
| LOW | PythonClient/multirotor/land.py | 1 | CODE | |
| LOW | PythonClient/multirotor/state.py | 1 | CODE | |
| LOW | PythonClient/multirotor/sensorframe_lidar_pointcloud.py | 53 | CODE | |
| LOW | PythonClient/car/pause_test.py | 6 | CODE | |
| LOW | PythonClient/car/car_monitor.py | 1 | CODE | |
| LOW | PythonClient/car/car_stress_test.py | 1 | CODE | |
| LOW | PythonClient/car/runtime_car.py | 1 | CODE | |
| LOW | PythonClient/car/car_time_of_day.py | 4 | CODE | |
| LOW | PythonClient/car/car_time_of_day.py | 8 | CODE | |
| LOW | PythonClient/car/car_time_of_day.py | 11 | CODE | |
| LOW | PythonClient/car/car_time_of_day.py | 12 | CODE | |
| LOW | PythonClient/car/car_lidar.py | 4 | CODE | |
| LOW | PythonClient/car/car_lidar.py | 8 | CODE | |
| LOW | PythonClient/car/reset_test_car.py | 1 | CODE | |
| LOW | PythonClient/car/hello_car.py | 1 | CODE | |
| 114 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ros2/src/airsim_ros_pkgs/launch/airsim_node.launch.py | 50 | # Create the launch description and populate | COMMENT |
| MEDIUM | PythonClient/imitation_learning/Cooking.py | 197 | # Create the next chunk | COMMENT |
| MEDIUM | PythonClient/computer_vision/capture_ir_segmentation.py | 50 | #Create a rotation matrix from camera pitch, roll, and yaw angles. | COMMENT |
| MEDIUM | PythonClient/reinforcement_learning/dqn_drone.py | 12 | # Create a DummyVecEnv for main airsim gym env | COMMENT |
| MEDIUM | PythonClient/reinforcement_learning/dqn_drone.py | 47 | # Create an evaluation callback with the same env, called every 10000 iterations | COMMENT |
| MEDIUM | PythonClient/reinforcement_learning/dqn_car.py | 12 | # Create a DummyVecEnv for main airsim gym env | COMMENT |
| MEDIUM | PythonClient/reinforcement_learning/dqn_car.py | 46 | # Create an evaluation callback with the same env, called every 10000 iterations | COMMENT |
| MEDIUM | PythonClient/environment/light_control.py | 16 | # Create a new light at the same pose | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | LogViewer/LogViewer/Properties/Settings.Designer.cs | 3 | // This code was generated by a tool. | COMMENT |
| HIGH | LogViewer/LogViewer/Properties/Resources.Designer.cs | 3 | // This code was generated by a tool. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …o/Assets/AirSimAssets/Scripts/Utilities/DataManager.cs | 9 | public class DataManager { | CODE |
| LOW | …c/airsim_ros_pkgs/launch/dynamic_constraints.launch.py | 5 | def generate_launch_description(): | CODE |
| LOW | …src/airsim_ros_pkgs/launch/static_transforms.launch.py | 6 | def generate_launch_description(): | CODE |
| LOW | ros2/src/airsim_ros_pkgs/launch/airsim_node.launch.py | 12 | def generate_launch_description(): | CODE |
| LOW | ros2/src/airsim_ros_pkgs/launch/rviz.launch.py | 8 | def generate_launch_description(): | CODE |
| LOW | …m_ros_pkgs/launch/position_controller_simple.launch.py | 5 | def generate_launch_description(): | CODE |
| LOW | …ch/airsim_with_simple_PD_position_controller.launch.py | 9 | def generate_launch_description(): | CODE |
| LOW | PythonClient/imitation_learning/Generator.py | 69 | def random_transform_with_states(self, x, seed=None): | CODE |
| LOW | PythonClient/imitation_learning/Generator.py | 340 | def _get_batches_of_transformed_samples(self, index_array): | CODE |
| LOW | PythonClient/computer_vision/image_benchmarker.py | 73 | def start_img_benchmark_thread(self): | CODE |
| LOW | PythonClient/computer_vision/image_benchmarker.py | 80 | def stop_img_benchmark_thread(self): | CODE |
| LOW | PythonClient/computer_vision/capture_ir_segmentation.py | 10 | def rotation_matrix_from_angles(pry): | CODE |
| LOW | …onClient/computer_vision/create_ir_segmentation_map.py | 65 | def get_new_temp_emiss_from_radiance(tempEmissivity, response): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp | 139 | //TODO: implement weather for Unity | COMMENT |
| LOW | …ity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp | 145 | //TODO: implement weather for Unity | COMMENT |
| LOW | …or/firmwares/simple_flight/AirSimSimpleFlightBoard.hpp | 88 | //TODO: implement this | COMMENT |
| LOW | …nclude/vehicles/car/firmwares/physxcar/PhysXCarApi.hpp | 65 | //TODO: implement arming for car | COMMENT |
| LOW | AirLib/include/physics/FastPhysicsEngine.hpp | 214 | //TODO: implement better rolling friction | COMMENT |
| LOW | …real/Plugins/AirSim/Source/SimJoyStick/SimJoyStick.cpp | 397 | //TODO: implement this for linux | COMMENT |
| LOW | …real/Plugins/AirSim/Source/SimJoyStick/SimJoyStick.cpp | 404 | //TODO: implement this for linux | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ros/src/airsim_ros_pkgs/scripts/car_joy.py | 65 | CODE | |
| LOW | PythonClient/multirotor/orbit.py | 154 | CODE | |
| LOW | …thonClient/multirotor/vehicleframe_lidar_pointcloud.py | 66 | CODE | |
| LOW | PythonClient/multirotor/sensorframe_lidar_pointcloud.py | 66 | CODE | |
| LOW | PythonClient/imitation_learning/Generator.py | 249 | CODE | |
| LOW | …onClient/reinforcement_learning/airgym/envs/car_env.py | 46 | CODE | |
| LOW | …Client/reinforcement_learning/airgym/envs/drone_env.py | 148 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | PythonClient/imitation_learning/Cooking.py | 50 | print('Error: Image', image_name, 'is not RGB.') | CODE |
| MEDIUM | PythonClient/imitation_learning/Cooking.py | 73 | print("Error: Your splitting ratio should add up to 1") | CODE |
| MEDIUM | PythonClient/imitation_learning/Cooking.py | 129 | print('Error: attempting to add image {0} twice.'.format(image_filepath)) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | PythonClient/imitation_learning/Generator.py | 13 | CODE | |
| LOW | PythonClient/imitation_learning/Generator.py | 55 | CODE | |
| LOW | PythonClient/imitation_learning/Generator.py | 187 | CODE | |
| LOW | PythonClient/computer_vision/capture_ir_segmentation.py | 138 | CODE | |
| LOW | PythonClient/airsim/types.py | 293 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | PythonClient/airsim/utils.py | 119 | except IOError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/multirotor/firmwares/mavlink/MavLinkMultirotorApi.hpp | 2031 | //every time we return status update, we need to check if we have new data | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | PythonClient/multirotor/set_wind.py | 32 | # Set wind to 0 | COMMENT |