src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/MiscellaneousChecker.py

branch
eric7
changeset 10639
757bfe32983f
parent 10516
72baef0baa76
child 10754
6faecb62f3a4
equal deleted inserted replaced
10638:12558008c269 10639:757bfe32983f
167 "M533", 167 "M533",
168 "M534", 168 "M534",
169 "M535", 169 "M535",
170 "M536", 170 "M536",
171 "M537", 171 "M537",
172 "M538", 172 ## Bugbear, opininonated
173 "M569",
173 ## Bugbear++ 174 ## Bugbear++
174 "M581", 175 "M581",
175 "M582", 176 "M582",
176 ## Format Strings 177 ## Format Strings
177 "M601", 178 "M601",
377 "M533", 378 "M533",
378 "M534", 379 "M534",
379 "M535", 380 "M535",
380 "M536", 381 "M536",
381 "M537", 382 "M537",
382 "M538", 383 "M569",
383 "M581", 384 "M581",
384 "M582", 385 "M582",
385 ), 386 ),
386 ), 387 ),
387 (self.__checkPep3101, ("M601",)), 388 (self.__checkPep3101, ("M601",)),
1655 1656
1656 1657
1657 ####################################################################### 1658 #######################################################################
1658 ## BugBearVisitor 1659 ## BugBearVisitor
1659 ## 1660 ##
1660 ## adapted from: flake8-bugbear v24.1.17 1661 ## adapted from: flake8-bugbear v24.2.6
1661 ## 1662 ##
1662 ## Original: Copyright (c) 2016 Łukasz Langa 1663 ## Original: Copyright (c) 2016 Łukasz Langa
1663 ####################################################################### 1664 #######################################################################
1664 1665
1665 BugBearContext = namedtuple("BugBearContext", ["node", "stack"]) 1666 BugBearContext = namedtuple("BugBearContext", ["node", "stack"])
2200 """ 2201 """
2201 self.__checkForM507(node) 2202 self.__checkForM507(node)
2202 self.__checkForM520(node) 2203 self.__checkForM520(node)
2203 self.__checkForM523(node) 2204 self.__checkForM523(node)
2204 self.__checkForM531(node) 2205 self.__checkForM531(node)
2205 self.__checkForM538(node) 2206 self.__checkForM569(node)
2206 2207
2207 self.generic_visit(node) 2208 self.generic_visit(node)
2208 2209
2209 def visit_AsyncFor(self, node): 2210 def visit_AsyncFor(self, node):
2210 """ 2211 """
3014 elif isinstance( 3015 elif isinstance(
3015 node.key, ast.Name 3016 node.key, ast.Name
3016 ) and node.key.id not in self.__getDictCompLoopAndNamedExprVarNames(node): 3017 ) and node.key.id not in self.__getDictCompLoopAndNamedExprVarNames(node):
3017 self.violations.append((node, "M535", node.key.id)) 3018 self.violations.append((node, "M535", node.key.id))
3018 3019
3019 def __checkForM538(self, node): 3020 def __checkForM569(self, node):
3020 """ 3021 """
3021 Private method to check for changes to a loop's mutable iterable. 3022 Private method to check for changes to a loop's mutable iterable.
3022 3023
3023 @param node loop node to be checked 3024 @param node loop node to be checked
3024 @type ast.For 3025 @type ast.For
3027 name = self.toNameStr(node.iter) 3028 name = self.toNameStr(node.iter)
3028 elif isinstance(node.iter, ast.Attribute): 3029 elif isinstance(node.iter, ast.Attribute):
3029 name = self.toNameStr(node.iter) 3030 name = self.toNameStr(node.iter)
3030 else: 3031 else:
3031 return 3032 return
3032 checker = M538Checker(name, self) 3033 checker = M569Checker(name, self)
3033 checker.visit(node.body) 3034 checker.visit(node.body)
3034 for mutation in checker.mutations: 3035 for mutation in checker.mutations:
3035 self.violations.append((mutation, "M538")) 3036 self.violations.append((mutation, "M569"))
3036 3037
3037 3038
3038 class M538Checker(ast.NodeVisitor): 3039 class M569Checker(ast.NodeVisitor):
3039 """ 3040 """
3040 Class traversing a 'for' loop body to check for modifications to a loop's 3041 Class traversing a 'for' loop body to check for modifications to a loop's
3041 mutable iterable. 3042 mutable iterable.
3042 """ 3043 """
3043 3044

eric ide

mercurial