Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsSome links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Start by rerunning the exact analysis command from the same checkout, account, working directory, environment, and Linux container or CI image. Save its full output and exit status before changing configuration or deleting generated files. Then identify whether the executable failed to start, the project inputs were wrong or incomplete, the process was killed, or the analysis completed and returned a nonzero status because of findings.
Classify the failure before changing anything
Record the command, current directory, account, executable path and version, complete standard output and error, and exit status. A clean rerun preserves a useful baseline; deleting caches or changing permissions first can erase evidence or introduce a new variable.
pwd
id
uname -a
command -v TOOL
TOOL --version
TOOL --help
TOOL ... 2>&1 | tee analysis.log
status=${PIPESTATUS[0]}
printf 'exit status: %s\n' "$status"
Replace TOOL ... with the actual command and arguments. The PIPESTATUS array is a Bash feature: it captures the analyzer’s status despite piping its output through tee. In another shell, use that shell’s method for capturing a command’s status. An environment dump can expose credentials, so redact tokens and secrets before sharing logs.
Recommended Free Tools
- Command not found or unable to start: check the executable path, installation, CPU architecture, script interpreter, and required shared libraries.
- Permission or file errors: check the invoking account, directory traversal and write access, mount mode, sandbox, and output path.
- Compiler or parser errors: check source inputs, compiler, headers, flags, language standard, generated files, and supported syntax.
- No files or findings: confirm target paths, ignore rules, compilation database contents, and whether the tool supports the relevant language or framework.
- Findings with a nonzero status: the run may have completed successfully while a configured threshold treats findings as an error.
- Crash, hang, or sudden termination: investigate tool defects, resource limits, OOM activity, timeouts, or external CI/container termination.
Check the Linux environment and file access
Compare the environment where the failure occurs with a known-good local or CI run. These commands expose common differences without assuming a particular distribution:
#1 Best Overall
printf '%s\n' "$PATH"
env | sort
ls -ld . ..
df -h .
df -i .
Check that the expected executable appears first in PATH, that the checkout and output location are accessible to the invoking account, and that the filesystem has free space and inodes. For a specific access failure, inspect every parent directory for traversal permission, the destination for write permission, and whether the container or CI mount is read-only.
Do not use sudo as a general workaround. It changes the user and often the environment and configuration discovery; it may hide the real access problem or leave root-owned output. Grant the specific account the access needed to the specific path rather than applying broad permission changes.
If an executable or file appears to be missing despite correct-looking paths, trace a reproducible failure:
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Rank #2
strace -f -o trace.log TOOL ...
strace follows child processes and records system calls, signals, and return errors. Look for failed calls such as ENOENT (not found) or EACCES (access denied) to identify the path behind a vague message. Tracing adds overhead, so reserve it for isolating startup or file-access problems.
Check for resource limits or external termination
If the process vanished, stalled, or was reported as killed, gather evidence before calling it an analyzer crash:
free -h
df -h .
journalctl -k --since "15 minutes ago"
Check kernel logs for OOM-killer activity and inspect the memory limit where the process actually runs. A host can have available memory while a container or CI job is constrained by a cgroup limit. The Linux kernel VM documentation describes OOM task dumps as diagnostic evidence about why the OOM killer ran and which task it selected; a killed process alone does not establish an OOM cause.
Rank #3
If only a highly parallel run fails, retry at lower parallelism when the analyzer supports it, then compare outcome and runtime. That is a diagnostic comparison, not proof of OOM and not a fix for incorrect inputs.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteVerify that the analyzer sees the intended files and configuration
Make targets, configuration, dependencies, and generated files explicit. A successful process can still produce an empty or incomplete result if it analyzed the wrong paths, skipped ignored files, discovered a different configuration, or lacked generated inputs.
- Confirm the target paths are relative to the working directory you recorded, or use explicit paths.
- Check project ignore rules and analyzer-specific exclusions before interpreting a zero-file result.
- Use the project’s lockfile and supported-version documentation to check runtime and dependency versions. Avoid upgrading everything at once: a newer analyzer, compiler, runtime, or plugin can create a separate incompatibility.
- For the file in question, inspect which configuration the installed analyzer actually applies, using options supported by that installed version.
JavaScript and ESLint
Make the executable, working directory, configuration, and target file explicit. Current ESLint CLI documentation describes --debug, --print-config, and --config. For example, inspect the effective configuration for one file with npx eslint --print-config src/file.js, and use --debug to investigate configuration discovery. Check configuration-file behavior and ignored-file behavior as applicable. CLI options and configuration formats can change between releases, so confirm them against the installed ESLint version.
For compiled code, prove the ordinary build works first
For C and C++, first reproduce the normal build with the same compiler, dependencies, environment, and working directory. Then verify that the analyzer has accurate build metadata. Clang tooling commonly uses a compilation database, compile_commands.json, containing the working directory and compile command for each source file.
- Confirm the database exists and is nonempty. CMake can generate it with
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON; it is typically in the build directory, not necessarily the source root. - Check that it contains the affected source file and records valid working directories, compiler, defines, include paths, and language-standard flags.
- Regenerate it after changing build configuration, and point the tool to the correct build directory.
- Run the affected compile command independently. For a small reproduction, clang-tidy can accept compiler options after
--; retain the relevant flags.
The LLVM tooling setup guide documents generating and using a compilation database. A clang-diagnostic-error means Clang could not parse or compile the translation unit; suppressing ordinary lint checks does not make that analysis valid. Other analyzers may use a different project model, so do not assume they consume this database.
Missing headers can also limit analysis. The Cppcheck manual says Cppcheck can report that it could not find all included headers and continue; its -I option adds include paths. Continuing does not guarantee complete context: verify whether missing declarations affect the code you need analyzed before trusting the result.
Best Value
Build-capturing analysis
Separate database creation from later query or rule execution. If a build succeeds normally but the captured database is empty or incomplete, investigate build tracing and capture mode before blaming the analysis rules. For CodeQL, the database create reference documents a custom --command build, while GitHub’s preparation guide describes indirect tracing for workflows that do not work with automatic build approaches or direct trace-command wrapping.
Platform support is tool-specific. Current CodeQL system requirements, checked 2026-09-24, list Ubuntu 22.04 and 24.04 for Linux and describe ARM64 support as beta. For the compiled-language and Ruby extraction categories listed for Linux, the page specifies glibc 2.17 or later and excludes musl-based distributions such as Alpine. Requirements differ by extractor, language, and CLI release; these limits should not be generalized to other analyzers.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Distinguish incomplete analysis from findings
A nonzero exit status is not, by itself, proof that analysis failed. Some analyzers return nonzero when findings meet a configured threshold; other nonzero statuses indicate configuration, build, or internal errors. Consult the exit-code documentation for the exact tool and version, then check the logs and output report.
- Confirm the expected report exists and can be parsed.
- Check that it covers the intended files or modules rather than an empty subset.
- Determine whether the status corresponds to findings, an incomplete build or extraction, or a process error.
- Fix broken inputs before adding suppressions or disabling checks; policy changes cannot repair missing headers, stale metadata, or skipped targets.
Escalate with a minimal, reproducible case
Once the baseline is saved, reduce the problem without changing the relevant conditions. Try one file, one compile command, or one lint target. Keep its important flags, runtime, working directory, and configuration so the reduced case still exercises the failure.
- Share the exact command, working directory, account context, executable path, version, and exit status.
- Include relevant standard output and error, a sanitized environment summary, and the expected versus actual files analyzed.
- For compiled code, include the failing compile command and the relevant compilation-database entry; for build capture, state whether the database was created and what build command was captured.
- Include resource-limit or kernel-log evidence for a suspected kill, and a system-call trace only when it helps explain a reproducible access or startup failure.
After preserving these details, regenerate build metadata or clear a cache only when testing a specific stale-artifact hypothesis. Keeping the original artifacts makes it possible to compare the clean result with the failure.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

