advantagescope-git
The npx command runs electron-builder to build the project from its own source; this is a standard part of the build process for Electron apps and does not execute untrusted remote code.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The npx command runs electron-builder to build the project from its own source; this is a standard part of the build process for Electron apps and does not execute untrusted remote code.
1 higher static finding superseded - not the current verdict (shown for transparency)
remote_code_tool
`npx`/`bunx`/`pnpm dlx`/`deno run <url>` downloads AND runs a remote package at build time — the moral equivalent of piping a download into a shell. Severity downgraded: Node.js consumer context.
-
PKGBUILD:66
npx electron-builder build --linux --"${!CARCH}" --dir $dist \
PKGBUILD
1 offending line(s) highlighted# Maintainer: manganeese <mangoiscute95@gmail.com>
# Contributor: Noah Heller <softwareenginer@pm.me>
_emsdk=4.0.12
pkgname=advantagescope-git
pkgver=27.0.0.ralpha.5.9.g058f8f6e
pkgrel=1
epoch=
pkgdesc="robot diagnostics, log review/analysis, and data visualization application tool"
arch=(x86_64)
url="https://github.com/Mechanical-Advantage/AdvantageScope"
license=("LicenseRef-BSD-3.0-Clause-Noninfringement")
groups=()
_electron=electron39
depends=("$_electron" at-spi2-core bash glibc gtk3 hicolor-icon-theme libgcc libnotify libsecret libstdc++ libxss libxtst nss python3 xdg-utils)
makedepends=(emscripten git npm)
checkdepends=()
optdepends=()
provides=()
conflicts=(advantagescope)
replaces=()
backup=()
options=()
install=
changelog=
source=("git+$url.git"
"advantagescope-git.desktop"
"remove-version.patch")
noextract=()
b2sums=('SKIP'
'9a501c0358f06bdea2802fa6e783cec578171fc854c030e2bd6be53640d91948a6e32feec6a098ffdbca269f31da1102d4383bc47f5fe23446e90d211a23ac14'
'49e71a8305de082ed17af8ff82468e720325330ec778e81a915c0cd2cd0a01a011d2c2eb0ab6e307487d9abf569082628762a3fe5436055aa468f8728052d1ae')
validpgpkeys=()
prepare() {
_ver="$(</usr/lib/${_electron}/version)"
cd AdvantageScope
npm pkg set homepage="https://github.com/Mechanical-Advantage/AdvantageScope"
npm pkg set version="${pkgver/.r/+r}"
# apply all patches
local src
for src in "${source[@]}"; do
src="${src%%::*}"
src="${src##*/}"
[[ $src = *.patch ]] || continue
echo "Apply patch $src..."
patch -Np1 < "../$src"
done
# allow git sources (they are depended on)
# need to do a scriptless fetch before a normal one to make `youtube-dl-exec` work
NPM_CONFIG_ALLOW_GIT=all npm ci --ignore-scripts
NPM_CONFIG_ALLOW_GIT=all npm install
}
pkgver() {
cd "AdvantageScope"
printf "%s" "$(git describe --tags | cut -c2- | sed 's+-+.r+' | tr - .)"
}
build() {
cd AdvantageScope
local x86_64=x64
npm run compile
npm run wasm:compile
npm run docs:build-embed
export NODE_OPTIONS="--max-old-space-size=4096"
npx electron-builder build --linux --"${!CARCH}" --dir $dist \
-c.electronDist=/usr/lib/"$_electron" \
-c.electronVersion="$_ver"
}
package() {
local x86_64=linux-unpacked
install -Dm644 -t "${pkgdir}/usr/share/applications" "${pkgname}.desktop"
install -Dm755 /dev/stdin "${pkgdir}/usr/bin/${pkgname}" <<EOF
#! /usr/bin/sh
exec $_electron "/usr/lib/${pkgname}/app.asar" "\$@"
EOF
cd AdvantageScope
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/$pkgname/LICENSE"
install -d "${pkgdir}/usr/lib/${pkgname}/"
cp -r dist/${!CARCH}/resources/* "${pkgdir}/usr/lib/${pkgname}"
cd icons/app/app-icons-linux
for i in *x*.png; do
local dir=${i%.png}
dir=${dir#icon_}
install -Dm6444 "$i" "${pkgdir}/usr/share/icons/hicolor/${dir}/apps/advantagescope.png"
done
}
# vim:set ts=2 sw=2 et:
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-03 00:23:04 | Low | 2 |
| 2026-10-02 00:00:32 | Low | 2 |
| 2026-10-01 00:02:06 | Low | 2 |
| 2026-09-30 00:20:07 | Low | 2 |
| 2026-09-29 00:07:46 | Low | 2 |
| 2026-09-28 00:28:32 | Low | 2 |
| 2026-09-27 00:07:07 | Low | 2 |
| 2026-09-26 00:12:15 | Low | 2 |
| 2026-09-25 00:03:36 | Low | 2 |
| 2026-09-24 00:24:14 | Low | 2 |
| 2026-09-23 00:28:13 | Low | 2 |
| 2026-09-22 00:15:14 | Low | 2 |
| 2026-09-21 00:26:32 | Low | 2 |
| 2026-09-20 00:25:31 | Low | 2 |
| 2026-09-19 00:25:36 | Low | 2 |
| 2026-09-18 00:17:11 | Low | 2 |
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |