SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay and FunCube
This report presents the forensic synthetic code analysis of f4exb/sdrangel, a C++ project with 3,852 GitHub stars. SynthScan v2.0 examined 1,194,169 lines of code across 5089 source files, recording 4293 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 4.1 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 4293 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| 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 | 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 |
| LOW | modemmeshcore/monocypher-ed25519.h | 21 | // | COMMENT |
| LOW | modemmeshcore/monocypher-ed25519.h | 41 | // | COMMENT |
| LOW | modemmeshcore/meshcore_decoder.h | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/meshcore_decoder.h | 41 | // malformed. Populates hdr. | COMMENT |
| LOW | modemmeshcore/meshcorepacket.cpp | 1 | /////////////////////////////////////////////////////////////////////////////////// | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1 | // Monocypher version __git__ | COMMENT |
| LOW | modemmeshcore/monocypher.c | 21 | // | COMMENT |
| LOW | modemmeshcore/monocypher.c | 41 | // | COMMENT |
| LOW | modemmeshcore/monocypher.c | 921 | } | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1001 | // Let t be a number. It can be uniquely decomposed thus: | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1021 | // - In C, x>>25 means floor(x / (2^25)). | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1041 | // | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1061 | // | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1081 | // | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1261 | + f5*(i64)g4 + f6*(i64)g3 + f7*(i64)g2 + f8*(i64)g1 + f9*(i64)g0; | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1361 | // | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1381 | // x^((p-5)/8) * sqrt(-1) = sqrt(-1)^2 / sqrt(x) | COMMENT |
| LOW | modemmeshcore/monocypher.c | 1721 | // From the specifications: | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2241 | crypto_blake2b_init (&ctx, 64); | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2261 | // The sole purpose of the prefix is to generate a secret random nonce. | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2281 | // - Signing a hash of the message instead of the message itself. This | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2381 | // | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2401 | // | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2441 | // | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2461 | u8 scalar[32]; | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2481 | // lop = (lop_x, lop_y) | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2561 | /////////////////// | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2581 | // Note that e is either 0, 1 or -1 | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2601 | // w^3 + A*w^2 + w = w * (w^2 + A*w + 1) | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2661 | // implementation detail. Currently, the tweak comprises: | COMMENT |
| LOW | modemmeshcore/monocypher.c | 2741 | // Montgomery reduction. | COMMENT |
| 3885 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 | 3663 | // 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 | sdrgui/copygen.py | 113 | CODE |
| 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 | 940 | // Step 2: Apply cepstral liftering for better source-filter separation | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 974 | // Step 3: IFFT to get cepstrum (quefrency domain) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 977 | // Step 4: Estimate pitch from the cepstrum before liftering. | COMMENT |
| LOW | plugins/channelrx/freqscanner/freqscannersink.cpp | 1005 | // Step 5: Apply lifter (low-pass filter in quefrency domain) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 1038 | // Step 6: FFT back to frequency domain (smoothed log spectrum) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 1041 | // Step 7: Convert back to linear magnitude | COMMENT |
| LOW | plugins/channelrx/demodadsb/adsbdemodgui.cpp | 3355 | // 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 |
| 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 | 940 | // Step 2: Apply cepstral liftering for better source-filter separation | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 974 | // Step 3: IFFT to get cepstrum (quefrency domain) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 977 | // Step 4: Estimate pitch from the cepstrum before liftering. | COMMENT |
| LOW | plugins/channelrx/freqscanner/freqscannersink.cpp | 1005 | // Step 5: Apply lifter (low-pass filter in quefrency domain) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 1038 | // Step 6: FFT back to frequency domain (smoothed log spectrum) | COMMENT |
| LOW⚡ | plugins/channelrx/freqscanner/freqscannersink.cpp | 1041 | // Step 7: Convert back to linear magnitude | 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 |
| 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 |
|---|---|---|---|---|
| MEDIUM | plugins/feature/startracker/startracker.cpp | 684 | // (Essentially the same as Gaussian of exp(-4*ln(theta^2/beamwidth^2)) | COMMENT |
| MEDIUM | …ugins/channelrx/demodmeshtastic/meshtasticdemodgui.cpp | 1178 | const int minEffectiveRate = std::max(500000, bandwidthHz * 4); // Keep margin above 2*BW for robust LoRa decode. | CODE |
| MEDIUM | plugins/channelrx/demodmeshcore/meshcoredemodgui.cpp | 1178 | const int minEffectiveRate = std::max(500000, bandwidthHz * 4); // Keep margin above 2*BW for robust LoRa decode. | 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 |
|---|---|---|---|---|
| LOW | snap/local/sdrangel_wrapper.sh | 228 | # Set XDG_DATA_HOME to local path | COMMENT |
| LOW | snap/local/sdrangel_wrapper.sh | 293 | # 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 |