SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay and FunCube
This report summarizes scanner evidence for f4exb/sdrangel, a C++ project with 4,145 GitHub stars. SynthScan examined 1,446,928 lines of code across 5718 source files, recording 4980 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 3.9 (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? 4696 finding(s).
Are imports declared and package/API names verified? 17 finding(s).
Are wrappers, guards, and repeated structures necessary? 280 finding(s).
Which changes need focused human review? 4980 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 4980 distinct pattern matches across 16 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 | .appveyor.yml | 21 | # -DCMAKE_PREFIX_PATH=C:\\Qt\\5.15.2\\msvc2019_64;C:\\Libraries\\boost_1_73_0" | COMMENT |
| LOW | .appveyor.yml | 41 | # # - TARGET: 'vs2019gui' | COMMENT |
| LOW | .appveyor.yml | 61 | # # secure: kyU5TaXRoily6q/QLRLqal2xCFGWEdnb8AJIu7FknsUQyj1wjRGmqC2My+Wfszod | COMMENT |
| LOW | .appveyor.yml | 81 | # devscripts fakeroot debhelper libfftw3-dev qtbase5-dev libopengl-dev libqt5opengl5-dev \ | COMMENT |
| LOW | .appveyor.yml | 101 | # - sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES" ]]; then bash cmake/ci/build_rtlsdr.sh; f | COMMENT |
| LOW | .appveyor.yml | 121 | # # release: sdrangel-v$(appveyor_build_version) | COMMENT |
| LOW | modemm17/M17Demodulator.h | 1 | // Copyright 2020-2021 Rob Riggs <rob@mobilinkd.com> | COMMENT |
| LOW | modemm17/M17FrameDecoder.h | 1 | // Copyright 2021 Mobilinkd LLC. | COMMENT |
| LOW | modemm17/M17Demodulator.cpp | 1 | #include <QDebug> | COMMENT |
| LOW | modemm17/M17Demodulator.cpp | 21 | // -0.11540977897637611, -0.14703962203941534, -0.16119995609538576, -0.14969512896336504, -0.10610329539459 | COMMENT |
| LOW | modemm17/Util.h | 1 | // Copyright 2020 Mobilinkd LLC. | COMMENT |
| LOW | modemm17/M17Modulator.cpp | 21 | // 0.0029364388513841593, 0.0031468394550958484, 0.002699564567597445, 0.001661182944400927, 0.00023319405581 | COMMENT |
| LOW | modemm17/M17Modulator.cpp | 41 | // -0.01944761739590459, -0.018598682349642525, -0.013403099825723372, -0.0055333532968188165, 0.00303152272555 | COMMENT |
| LOW | modemm17/ax25_frame.h | 1 | // Copyright 2012-2021 Rob Riggs <rob@mobilinkd.com> | COMMENT |
| LOW | modemm17/Correlator.h | 1 | // Copyright 2021 Rob Riggs <rob@mobilinkd.com> | COMMENT |
| LOW | modemm17/M17Modulator.h | 1 | #pragma once | COMMENT |
| LOW | modemdab/dabaudioframing.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabmsc.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabmsc.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabtii.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabtii.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabofdm.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabtables.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabconvolutional.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabaudioframing.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabpad.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabfft.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabfft.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabreceiver.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabreceiver.h | 21 | COMMENT | |
| LOW | modemdab/dabtables.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabprofile.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabofdm.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabprofile.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabensemble.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabensemble.h | 21 | COMMENT | |
| LOW | modemdab/dabreceiver.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabcoherent.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabcoherent.cpp | 421 | m_feedback = alpha; | COMMENT |
| LOW | modemdab/dabpad.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabaudiodecoder.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabcoherent.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabcoherent.h | 21 | COMMENT | |
| LOW | modemdab/dabcoherent.h | 41 | // then estimated from the symbols before and after, each turned by its known symbol, rather | COMMENT |
| LOW | modemdab/dabensemble.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabconvolutional.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemdab/dabaudiodecoder.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/meshcore_crypto.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/meshcore_crypto.h | 41 | MODEMMESHCORE_API QByteArray derivePubKey(const QByteArray& seed); | COMMENT |
| LOW | modemmeshcore/tiny_aes.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/meshcore_identity.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/monocypher.h | 1 | // Monocypher version __git__ | COMMENT |
| LOW | modemmeshcore/monocypher.h | 21 | // | COMMENT |
| LOW | modemmeshcore/monocypher.h | 41 | // | COMMENT |
| LOW | modemmeshcore/meshcore_builders.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/meshcore_command.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/meshcore_crypto.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/meshcore_builders.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/meshcore_identity.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/monocypher-ed25519.h | 1 | // Monocypher version __git__ | COMMENT |
| 4556 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scriptsapi/config.py | 29 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/config.py | 45 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/config.py | 52 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/config.py | 65 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/config.py | 113 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 94 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 97 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 106 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 109 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 127 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 130 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 134 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 137 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 162 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 165 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 169 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/plutodvbrpt.py | 172 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 52 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 65 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 68 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 195 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 198 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 211 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 214 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 237 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 240 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 275 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 278 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | scriptsapi/plutodvbrpt.py | 302 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 30 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 35 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 39 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 43 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 47 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 51 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 56 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 138 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 142 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 146 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/superscanner.py | 153 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 107 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 171 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 177 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 197 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 211 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 216 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 255 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 263 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 275 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 287 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 354 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 373 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 390 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 398 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 416 | # ====================================================================== | COMMENT |
| MEDIUM | scriptsapi/superscanner.py | 451 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/freqtracking.py | 59 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/freqtracking.py | 62 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scriptsapi/freqtracking.py | 70 | # ====================================================================== | COMMENT |
| MEDIUM⚡ | scriptsapi/freqtracking.py | 73 | # ---------------------------------------------------------------------- | COMMENT |
| 149 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scriptsapi/config.py | 94 | print("Error %d:%s" % (r.status_code, command.get('msg', ''))) | CODE |
| LOW | scriptsapi/config.py | 108 | except Exception as ex: | CODE |
| MEDIUM | scriptsapi/config.py | 66 | def main(): | CODE |
| LOW⚡ | scriptsapi/plutodvbrpt.py | 122 | except Exception as ex: | CODE |
| LOW⚡ | scriptsapi/plutodvbrpt.py | 158 | except Exception as ex: | CODE |
| LOW | scriptsapi/plutodvbrpt.py | 296 | except Exception as ex: # pylint: disable=broad-except | CODE |
| MEDIUM | scriptsapi/superscanner.py | 417 | def main(): | CODE |
| LOW⚡ | scriptsapi/superscanner.py | 134 | except Exception as ex: | CODE |
| LOW | scriptsapi/superscanner.py | 447 | except Exception as ex: | CODE |
| LOW | scriptsapi/dump.py | 242 | except Exception as ex: | CODE |
| MEDIUM | scriptsapi/dump.py | 227 | def main(): | CODE |
| LOW | scriptsapi/ptt_feature.py | 106 | except Exception as ex: | CODE |
| MEDIUM | scriptsapi/ptt_feature.py | 93 | def main(): | CODE |
| LOW | scriptsapi/qo100_datv.py | 186 | except Exception as ex: # pylint: disable=broad-except | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/ptt.py | 52 | print("Error starting device %d" % deviceIndex) | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/ptt.py | 58 | print("Error getting device %d running state" % deviceIndex) | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/ptt.py | 74 | print("Error stopping device %d" % deviceIndex) | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/ptt.py | 80 | print("Error getting device %d running state" % deviceIndex) | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/ptt.py | 92 | print("Error setting focus on device set %d" % deviceIndex) | CODE |
| MEDIUM | swagger/sdrangel/examples/ptt.py | 128 | print("Error getting device sets configuration") | CODE |
| LOW | swagger/sdrangel/examples/ptt.py | 130 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/ptt.py | 96 | def main(): | CODE |
| LOW | swagger/sdrangel/examples/nfm_test.py | 93 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/nfm_test.py | 57 | def main(): | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/start_stop.py | 50 | print("Error starting device %d" % deviceIndex) | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/start_stop.py | 56 | print("Error getting device %d running state" % deviceIndex) | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/start_stop.py | 72 | print("Error stopping device %d" % deviceIndex) | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/start_stop.py | 78 | print("Error getting device %d running state" % deviceIndex) | CODE |
| MEDIUM | swagger/sdrangel/examples/start_stop.py | 102 | print("Error getting device sets configuration") | CODE |
| LOW | swagger/sdrangel/examples/start_stop.py | 104 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/start_stop.py | 82 | def main(): | CODE |
| LOW | swagger/sdrangel/examples/scanner.py | 374 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/scanner.py | 276 | def main(): | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/config.py | 55 | print("Error %d:%s" % (r.status_code, command[4])) | CODE |
| LOW⚡ | swagger/sdrangel/examples/config.py | 64 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/config.py | 38 | def main(): | CODE |
| LOW | swagger/sdrangel/examples/tx_test.py | 287 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/tx_test.py | 261 | def main(): | CODE |
| LOW | swagger/sdrangel/examples/rx_tx_test.py | 251 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/rx_tx_test.py | 90 | def main(): | CODE |
| LOW | swagger/sdrangel/examples/rx_test.py | 364 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/rx_test.py | 340 | def main(): | CODE |
| LOW | swagger/sdrangel/examples/stop_server.py | 68 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/stop_server.py | 57 | def main(): | CODE |
| MEDIUM | swagger/sdrangel/examples/add_channel.py | 44 | print("Error adding channel. HTTP: %d" % r.status_code) | CODE |
| LOW | swagger/sdrangel/examples/add_channel.py | 47 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/add_channel.py | 33 | def main(): | CODE |
| MEDIUM | swagger/sdrangel/examples/randomize_colors.py | 112 | print("Error changing channel {0} color to rgb({1},{2},{3})".format(channel_info["index"], rn, gn, bn)) | CODE |
| MEDIUM⚡ | swagger/sdrangel/examples/randomize_colors.py | 152 | print("Error changing channel {0} color to rgb({1},{2},{3})".format(channel_info["index"], rn, gn, bn)) | CODE |
| MEDIUM | swagger/sdrangel/examples/randomize_colors.py | 184 | print("Error getting deviceset %d info. HTTP: %d" % (options.device_index, r.status_code)) | CODE |
| LOW | swagger/sdrangel/examples/randomize_colors.py | 187 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/randomize_colors.py | 169 | def main(): | CODE |
| LOW | swagger/sdrangel/examples/limesdr_tx.py | 116 | except Exception as ex: | CODE |
| MEDIUM | swagger/sdrangel/examples/limesdr_tx.py | 61 | def main(): | CODE |
| MEDIUM | swagger/sdrangel/examples/rtlsdr_settings.py | 57 | print("Error HTTP:", r.status_code) | CODE |
| MEDIUM | swagger/sdrangel/examples/rtlsdr_settings.py | 68 | print("Error HTTP:", r.status_code) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | plugins/samplesource/limesdrinput/readme.md | 69 | ☞ In the LMS7002M TSP block the NCO sits before the decimator (see Fig.14 of the [datasheet](http://www.limemicro. | CODE |
| HIGH | plugins/samplesource/xtrxinput/readme.md | 97 | ☞ In the LMS7002M TSP block the NCO sits before the decimator (see Fig.14 of the [datasheet](http://www.limemicro. | CODE |
| HIGH | plugins/samplesink/limesdroutput/readme.md | 87 | ☞ In the LMS7002M TSP block the NCO sits after the interpolator (see Fig.14 of the [datasheet](http://www.limemicr | CODE |
| HIGH | plugins/samplesink/xtrxoutput/readme.md | 87 | ☞ In the LMS7002M TSP block the NCO sits after the interpolator (see Fig.14 of the [datasheet](http://www.limemicr | CODE |
| HIGH | plugins/channelrx/demodadsb/adsbdemodgui.cpp | 3717 | // I've implemented a few extra BDSes, but these are rarely seen. | COMMENT |
| HIGH | plugins/samplemimo/limesdrmimo/readme.md | 76 | ☞ In the LMS7002M TSP Rx block the NCO sits before the decimator (see Fig.14 of the [datasheet](http://www.limemic | CODE |
| HIGH | plugins/samplemimo/xtrxmimo/readme.md | 106 | ☞ In the LMS7002M TSP Rx block the NCO sits before the decimator (see Fig.14 of the [datasheet](http://www.limemic | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scriptsapi/config.py | 66 | CODE | |
| LOW | scriptsapi/plutodvbrpt.py | 135 | CODE | |
| LOW | scriptsapi/superscanner.py | 108 | CODE | |
| LOW | scriptsapi/superscanner.py | 217 | CODE | |
| LOW | scriptsapi/freqtracking.py | 71 | CODE | |
| LOW | scriptsapi/dump.py | 198 | CODE | |
| LOW | scriptsapi/ptt_feature.py | 32 | CODE | |
| LOW | swagger/sdrangel/examples/ptt.py | 40 | CODE | |
| LOW | swagger/sdrangel/examples/ptt.py | 62 | CODE | |
| LOW | swagger/sdrangel/examples/ptt.py | 96 | CODE | |
| LOW | swagger/sdrangel/examples/start_stop.py | 38 | CODE | |
| LOW | swagger/sdrangel/examples/start_stop.py | 60 | CODE | |
| LOW | swagger/sdrangel/examples/start_stop.py | 82 | CODE | |
| LOW | swagger/sdrangel/examples/scanner.py | 103 | CODE | |
| LOW | swagger/sdrangel/examples/scanner.py | 158 | CODE | |
| LOW | swagger/sdrangel/examples/scanner.py | 178 | CODE | |
| LOW | swagger/sdrangel/examples/scanner.py | 223 | CODE | |
| LOW | swagger/sdrangel/examples/scanner.py | 276 | CODE | |
| LOW | swagger/sdrangel/examples/config.py | 38 | CODE | |
| LOW | swagger/sdrangel/examples/tx_test.py | 95 | CODE | |
| LOW | swagger/sdrangel/examples/tx_test.py | 113 | CODE | |
| LOW | swagger/sdrangel/examples/tx_test.py | 168 | CODE | |
| LOW | swagger/sdrangel/examples/rx_tx_test.py | 90 | CODE | |
| LOW | swagger/sdrangel/examples/rx_test.py | 135 | CODE | |
| LOW | swagger/sdrangel/examples/rx_test.py | 244 | CODE | |
| LOW | swagger/sdrangel/examples/randomize_colors.py | 41 | CODE | |
| LOW | sdrgui/copygen.py | 113 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | plugins/feature/startracker/startracker.cpp | 724 | // (Essentially the same as Gaussian of exp(-4*ln(theta^2/beamwidth^2)) | COMMENT |
| MEDIUM | plugins/channelrx/demoddrm/drmdemodsink.cpp | 1610 | // starts it again (a seamless reconfiguration would need each frame's | COMMENT |
| MEDIUM | plugins/channelrx/demodwefax/wefaxdecoder.cpp | 421 | // Theil-Sen gives a robust first estimate for the short phasing sequence. | COMMENT |
| MEDIUM | plugins/channelrx/demodselcal/selcalcarriertracker.cpp | 105 | // The median is robust to the carrier and any tones near it. For noise | COMMENT |
| MEDIUM | plugins/channelrx/demodselcal/selcaldecoder.cpp | 264 | // The median of the band is robust to the tones themselves. For white | COMMENT |
| MEDIUM | …ugins/channelrx/demodmeshtastic/meshtasticdemodgui.cpp | 1179 | const int minEffectiveRate = std::max(500000, bandwidthHz * 4); // Keep margin above 2*BW for robust LoRa decode. | CODE |
| MEDIUM | plugins/channelrx/demodmeshcore/meshcoredemodgui.cpp | 1179 | const int minEffectiveRate = std::max(500000, bandwidthHz * 4); // Keep margin above 2*BW for robust LoRa decode. | CODE |
| MEDIUM | sdrgui/dtv/dtvvideoplayer.cpp | 1196 | // GPU decoders aren't as robust against damaged data as FFmpeg's own: NVDEC read thousands of bytes beyond a | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/channelrx/freqscanner/freqscannersink.cpp | 924 | // Step 1: Compute log magnitude spectrum | COMMENT |
| LOW | plugins/channelrx/freqscanner/freqscannersink.cpp | 938 | // Step 2: Apply cepstral liftering for better source-filter separation | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 972 | // Step 3: IFFT to get cepstrum (quefrency domain) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 975 | // Step 4: Estimate pitch from the cepstrum before liftering. | COMMENT |
| LOW | plugins/channelrx/freqscanner/freqscannersink.cpp | 1003 | // Step 5: Apply lifter (low-pass filter in quefrency domain) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 1036 | // Step 6: FFT back to frequency domain (smoothed log spectrum) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 1039 | // Step 7: Convert back to linear magnitude | COMMENT |
| LOW | plugins/channelrx/demodadsb/adsbdemodgui.cpp | 3400 | // Called when we have lat & long from local decode and we need to check if it is in a valid range (<180nm/333km airborn | COMMENT |
| LOW | .github/workflows/coverity.sh | 217 | # Step 1: Initialize build | COMMENT |
| LOW⚡ | .github/workflows/coverity.sh | 242 | # Step 2: Upload to cloud | COMMENT |
| LOW⚡ | .github/workflows/coverity.sh | 251 | # Step 3: Enqueue build | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/channelrx/freqscanner/freqscannersink.cpp | 924 | // Step 1: Compute log magnitude spectrum | COMMENT |
| LOW | plugins/channelrx/freqscanner/freqscannersink.cpp | 938 | // Step 2: Apply cepstral liftering for better source-filter separation | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 972 | // Step 3: IFFT to get cepstrum (quefrency domain) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 975 | // Step 4: Estimate pitch from the cepstrum before liftering. | COMMENT |
| LOW | plugins/channelrx/freqscanner/freqscannersink.cpp | 1003 | // Step 5: Apply lifter (low-pass filter in quefrency domain) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 1036 | // Step 6: FFT back to frequency domain (smoothed log spectrum) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 1039 | // Step 7: Convert back to linear magnitude | COMMENT |
| LOW | .github/workflows/coverity.sh | 217 | # Step 1: Initialize build | COMMENT |
| LOW⚡ | .github/workflows/coverity.sh | 242 | # Step 2: Upload to cloud | COMMENT |
| LOW⚡ | .github/workflows/coverity.sh | 251 | # Step 3: Enqueue build | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scriptsapi/dump.py | 45 | def delete_all_features_items(self): | CODE |
| LOW | scriptsapi/dump.py | 116 | def delete_all_channels_items(self): | CODE |
| LOW⚡ | scriptsapi/qo100_datv.py | 50 | def change_device_center_frequency(self, content, new_frequency): | CODE |
| LOW⚡ | scriptsapi/qo100_datv.py | 70 | def change_channel_center_frequency(self, content, new_frequency): | CODE |
| LOW⚡ | sdrbase/resources/webapi/doc/swagger-ui/swagger-ui.js | 1 | !function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"fu | CODE |
| LOW⚡ | …ces/webapi/doc/swagger-ui/swagger-ui-es-bundle-core.js | 2 | import*as e from"ieee754";import*as t from"base64-js";import*as r from"react";import*as n from"redux";import*as a from"i | CODE |
| LOW | …/webapi/doc/swagger-ui/swagger-ui-standalone-preset.js | 2 | !function webpackUniversalModuleDefinition(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"fu | CODE |
| LOW | swagger/sdrangel/examples/randomize_colors.py | 93 | def randomize_channels_colors(options, channels): | CODE |
| LOW | plugins/feature/map/map/cockpit.js | 953 | function drawVerticalSpeedIndicator(ctx, fm20, fm30) { | CODE |
| LOW | plugins/feature/map/map/map3d.html | 1220 | function getTimerIntervalPropertyValueAt(entity, propertyName, time) { | CODE |
| LOW | plugins/feature/map/map/map3d.html | 1235 | function getSampledPropertyValueAt(entity, propertyName, time) { | CODE |
| LOW | plugins/feature/mcpserver/mcpserver.h | 34 | class MCPRequestHandler; | CODE |
| LOW | plugins/feature/mcpserver/mcprequesthandler.h | 42 | class MCPRequestHandler : public qtwebapp::HttpRequestHandler | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …re/map/Cesium/ThirdParty/google-earth-dbroot-parser.js | 1 | (()=>{window.cesiumGoogleEarthDbRootParser=function(d){"use strict";var f=d.Reader,u=d.util,n=d.roots.default||(d.roots. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scriptsapi/plutodvbrpt.py | 10 | CODE | |
| LOW | scriptsapi/plutodvbrpt.py | 11 | CODE | |
| LOW | scriptsapi/superscanner.py | 6 | CODE | |
| LOW | scriptsapi/superscanner.py | 8 | CODE | |
| LOW | scriptsapi/superscanner.py | 9 | CODE | |
| LOW | scriptsapi/superscanner.py | 15 | CODE | |
| LOW | scriptsapi/superscanner.py | 199 | CODE | |
| LOW | scriptsapi/freqtracking.py | 19 | CODE | |
| LOW | scriptsapi/freqtracking.py | 22 | CODE | |
| LOW | scriptsapi/dump.py | 15 | CODE | |
| LOW | sdrgui/copygen.py | 9 | CODE | |
| LOW | sdrgui/copygen.py | 10 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | sdrbase/resources/webapi/doc/swagger-ui/swagger-ui.js | 1 | !function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"fu | CODE |
| LOW⚡ | sdrbase/resources/webapi/doc/swagger-ui/swagger-ui.js | 1 | !function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"fu | CODE |
| LOW⚡ | …ces/webapi/doc/swagger-ui/swagger-ui-es-bundle-core.js | 2 | import*as e from"ieee754";import*as t from"base64-js";import*as r from"react";import*as n from"redux";import*as a from"i | CODE |
| LOW⚡ | …ces/webapi/doc/swagger-ui/swagger-ui-es-bundle-core.js | 2 | import*as e from"ieee754";import*as t from"base64-js";import*as r from"react";import*as n from"redux";import*as a from"i | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | swagger/sdrangel/examples/scanner.py | 372 | except KeyboardInterrupt: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/git-attributes.yml | 20 | # Check if renormalization changed anything | COMMENT |
| LOW | snap/local/sdrangel_wrapper.sh | 202 | # Set XDG_DATA_HOME to local path | COMMENT |
| LOW | snap/local/sdrangel_wrapper.sh | 267 | # Check if we can actually read the contents of each xdg dir | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | modemmeshcore/monocypher.h | 255 | // Don't forget to add authentication. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scriptsapi/plutodvbrpt.py | 20 | logger = logging.getLogger(__name__) | CODE |