Files
conan-center-index/linter/package_name.py
Javier G. Sogo 3365a3ae12 (#11147) [linter] Linter for v2 migration
* [linter] propose linter for v2 migration

* touch

* remove requirements file

* share requirements as string/env variable

* add new line

* cache off

* version range

* exact requirement

* pylint already contains astroid

* Add comment about test_package

* better naming

* remove and rename files
2022-06-13 13:44:37 +02:00

40 lines
1.3 KiB
Python

from pylint.checkers import BaseChecker
from pylint.interfaces import IAstroidChecker
from astroid import nodes, Const, AssignName
class PackageName(BaseChecker):
"""
All packages must have a lower-case name
"""
__implements__ = IAstroidChecker
name = "conan-package-name"
msgs = {
"E9004": (
"Reference name should be all lowercase",
"conan-bad-name",
"Use only lower-case on the package name: `name = 'foobar'`."
),
"E9005": (
"Missing name attribute",
"conan-missing-name",
"The member attribute `name` must be declared: `name = 'foobar'`."
)
}
def visit_classdef(self, node: nodes) -> None:
if node.basenames == ['ConanFile']:
for attr in node.body:
children = list(attr.get_children())
if len(children) == 2 and \
isinstance(children[0], AssignName) and \
children[0].name == "name" and \
isinstance(children[1], Const):
value = children[1].as_string()
if value.lower() != value:
self.add_message("conan-bad-name", node=attr, line=attr.lineno)
return
self.add_message("conan-missing-name", node=node)