priv-kweihmann / oelint-adv
Advanced oelint
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing priv-kweihmann/oelint-adv in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewoelint-adv Advanced oelint Purpose Based on the OpenEmbedded Styleguide and work done by oe-stylize-tool this module offers a (nearly) complete linter for bitbake-recipes. The tool should help anyone working with YOCTO/OpenEmbedded to write more clean, less 'magical' recipes, without the need to know all the internals of your used poky/OpenEmbedded version. It could also be used as part of a CI to avoid hard to debug issues slipping to your code base - be sure to checkout rulefile for that use case. As every linter this tool is sometimes extra picky, but for the good of it, not just to bug people. Especially for novice users it might be a help to avoid the most common pitfalls of bitbake recipes. The tool does handle includes/requires automatically, so you don't have to pass them via CLI. **NOTE**: .bbappend-files have to be passed via CLI - these are NOT gathered automatically. You can also pass distro , machine and layer config files. Those will be automatically handled in the correct order. Install With pip (**recommended**) from source Usage Output Will be [file]:[line]:[severity]:[id]:[message]. To change the default message format, please see Output message format section. Example: **NOTE**: as the tool checks against permutations of the input files, the used permutation matrix is appended to the rules message. E.g. • [branch:true] , means the finding was found on the true branch of an expanded inline function block. • [branch:false,mydistro.conf] , means the finding occurs only when using mydistro.conf and on the false branch of an expanded inline function block. This should help to better spot the issue found by the linter. Apply automatic fixing Some of the rules are capable of fixing the issues found automatically. This will be done if you pass **--fix** as a startup parameter. As long as you don't pass **--nobackup** a backup copy (filename + .bak) will be created for all files fixed. Available rules Rules marked with **[F]** are able to perform automatic fixing Rules marked with **[S]** can have multiple sub-IDs Rules marked with **[I]** need to be activated through a rule file first • oelint.append.protvars - Variables that shouldn't be set in a bbappend **[S]** • oelint.bbclass.underscores - bbclass filenames shall not contain dashes • oelint.exportfunction.dash - EXPORT_FUNCTIONS shall not contain dashes • oelint.file.inactiveupstreamdetails - Patches with Upstream-Status: Inactive-Upstream require more details • oelint.file.inappropriatemsg - Patches with Upstream-Status: Inappropriate should provide a valid reasoning • oelint.file.includenotfound - File to be included not found • oelint.file.includerelpath - Require should be used instead of include • oelint.file.inlinesuppress_na - A not applicable inline suppression has been found • oelint.file.nospaces - Path to file should not contain spaces • oelint.file.patchsignedoff - Patches should contain a Signed-Of-By entry • oelint.file.requireinclude - Require should be used instead of include • oelint.file.requirenotfound - File to be required not found • oelint.file.underscores - Checks the correct usage of underscores in filename • oelint.file.upstreamstatus - Patches should contain a Upstream-Status entry • oelint.file.upstreamstatus_occurance - Certain Upstream-Status classifier found **[S]** **[I]** • oelint.func.specific - Function is specific to an unknown identifier • oelint.newline.consecutive - Consecutive blank lines should be avoided • oelint.newline.eof - File shall end on a newline **[F]** • oelint.spaces.emptyline - Empty line should not contain spaces or tabs **[F]** • oelint.spaces.linebeginning - No space at a line beginning **[F]** • oelint.spaces.linecont - Safe line continuation **[F]** • oelint.spaces.lineend - No spaces at line end **[F]** • oelint.tabs.notabs - No tabs allowed **[F]** • oelint.task.addnotaskbody - Task added by addtask cannot be found • oelint.task.customorder - order of custom tasks added via addtask • oelint.task.dash - Functions and related statements shall not contain dashes • oelint.task.docstrings - Custom tasks should have docstrings • oelint.task.heredocs - Usage of heredocs should be avoided. Use files instead • oelint.task.multifragments - Multiple fragments of the same function in the same file should be merged • oelint.task.network - Warn about potential network access of tasks • oelint.task.noanonpython - Avoid anonymous python functions • oelint.task.nocopy - No cp usage in do_install • oelint.task.nomkdir - No mkdir usage in do_install • oelint.task.nopythonprefix - Tasks containing shell code should NOT be prefixed with 'python' in function header • oelint.task.order - Order of tasks **[S]** • oelint.task.pythonprefix - Tasks containing python code should be prefixed with 'python' in function header • oelint.var.addpylib - addpylib is only valid in .conf files • oelint.var.badimagefeature - Warn about "bad" IMAGE_FEATURES • oelint.var.bbclassextend - Use BBCLASSEXTEND when possible • oelint.var.filesoverride - FILES:*(FILES_*) variables should not be overridden • oelint.var.improperinherit - Warn about improperly named inherits • oelint.var.inherit - Check the correct usage of inherit and inherit_defer (scarthgap+) • oelint.var.inheritdevtool - inherit_defer is recommended for native and nativesdk class **[S]** (scarthgap+) • oelint.var.inheritlast - Target specific classes need to be inherited last **[S]** • oelint.var.licenseremotefile - License shall be a file in remote source not a local file • oelint.var.mandatoryvar - Check for mandatory variables **[S]** • oelint.var.multiinclude - Warn on including the same file more than once • oelint.var.multiinherit - Warn on inherit the same file more than once • oelint.var.nativefilename - Native only recipes should be named.md -native • oelint.var.nativesdkfilename - NativeSDK only recipes should be named nativesdk- • oelint.var.order - Variable order **[S]** • oelint.var.override - Check if inclu…