Skip to main content

Advanced bitbake-recipe linter

Project description

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 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

Usage

oelint-adv
usage: __main__.py [-h] [--suppress SUPPRESS] [--output OUTPUT] [--fix]
                   [--nobackup]
                   files [files ...]

Advanced OELint - Check bitbake recipes against OECore styleguide

positional arguments:
  files                File to parse

optional arguments:
  -h, --help           show this help message and exit
  --suppress SUPPRESS  Rules to suppress
  --output OUTPUT      Where to flush the findings (default: stderr)
  --fix                Automatically try to fix the issues
  --nobackup           Don't create backup file when auto fixing

Output

Will be [file]:[line]:[severity]:[message].

Example:

/disk/meta-some/cppcheck-native/cppcheck.inc:26:error:oelint.task.nomkdir:'mkdir' shall not be used in do_install. Use 'install'
/disk/meta-some/cppcheck-native/cppcheck-native_1.87.bb:0:error:oelint.var.mandatoryvar:Variable 'SECTION' should be set
/disk/meta-some/cppcheck-native/cppcheck.inc:1:warning:oelint.vars.summary80chars:'SUMMARY' should not be longer than 80 characters
/disk/meta-some/cppcheck-native/cppcheck.inc:4:warning:oelint.vars.homepageprefix:'HOMEPAGE' should start with 'http://' or 'https://'
/disk/meta-some/cppcheck-native/cppcheck.inc:28:warning:oelint.spaces.lineend:Line shall not end with a space
/disk/meta-some/cppcheck-native/cppcheck-native_1.87.bb:0:error:oelint.var.mandatoryvar:Variable 'AUTHOR' should be set
/disk/meta-some/cppcheck-native/cppcheck.inc:26:error:oelint.task.nocopy:'cp' shall not be used in do_install. Use 'install'
/disk/meta-some/cppcheck-native/cppcheck.inc:12:warning:oelint.var.order:'DEPENDS' should be placed before 'inherit'

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

  • oelint.comments.notrailing - No trailing comments allowed, comments should be on a single line

  • oelint.file.patchsignedoff - Patches should contain a Signed-Of-By entry

  • oelint.file.upstreamstatus - Patches should contain a Upstream-Status entry

  • 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.docstrings - Custom tasks should have docstrings

  • oelint.task.multiappends - Multiple appends to the same function in the same file won’t work in bitbake

  • oelint.task.nocopy - No cp usage in do_install

  • oelint.task.nomkdir - No mkdir usage in do_install

  • oelint.task.order - Order of tasks

  • oelint.var.bbclassextend - Use BBCLASSEXTEND when possible

  • oelint.vars.dependsappend - DEPENDS should only be appended, not overwritten

  • oelint.var.licenseremotefile - License shall be a file in remote source not a local file

  • oelint.var.mandatoryvar - Check for mandatory variables

  • 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 -native

  • oelint.var.order - Variable order

  • oelint.var.override - Check if include/append is overriding a variable

  • oelint.var.suggestedvar - Notice on suggested variables

  • oelint.vars.bugtrackerisurl - BUGTRACKER should be an URL

  • oelint.vars.homepageprefix - HOMEPAGE should begin with https:// or http://

  • oelint.vars.multilineident - On a multiline assignment, line indent is desirable

  • oelint.vars.sectionlowercase - SECTION should be lowercase only [F]

  • oelint.vars.spacesassignment - ‘ = ‘ should be correct variable assignment

  • oelint.vars.summary80chars - SUMMARY should max. be 80 characters long

  • oelint.vars.summarylinebreaks - No line breaks in SUMMARY

  • oelint.vars.valuequoted - Variable values should be properly quoted

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oelint_adv-1.5.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oelint_adv-1.5.0-py3.6.egg (75.8 kB view details)

Uploaded Egg

File details

Details for the file oelint_adv-1.5.0.tar.gz.

File metadata

  • Download URL: oelint_adv-1.5.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for oelint_adv-1.5.0.tar.gz
Algorithm Hash digest
SHA256 da442e4d1600a2ac48e7122aaaaff452201db84e98dc6fb4320b9def6a94a7d6
MD5 f9409790ce0423d2a8a5121ec252450d
BLAKE2b-256 b99ebd34c3dfa3ca0cbe15ecff82b10c40da2f8c90198b746263bc30be04944b

See more details on using hashes here.

File details

Details for the file oelint_adv-1.5.0-py3.6.egg.

File metadata

  • Download URL: oelint_adv-1.5.0-py3.6.egg
  • Upload date:
  • Size: 75.8 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for oelint_adv-1.5.0-py3.6.egg
Algorithm Hash digest
SHA256 779141e160ca60a52a1c6ce98ed4528db52ae2eb6700853521c5393238b82d47
MD5 a542ca5b8541d98bab3e37f7fe7c57fc
BLAKE2b-256 afed14159a54e1541b604c24d013033227e2a7e511e0ba4d14f0303997ad6107

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page