New Issues:
10 new issues have been added to the Python analyzer. Here are the issues with examples:
Bad async
magic method (PTC-W0045):
class BadClass:
async def __lt__(self, other):
Unit test class with no tests (PTC-W0046):
import unittest
def Tests(unittest.TestCase):
def my_test(self, arg1, arg2):
self.assertEquals(arg1, arg2)
Empty block of code (PTC-W0047):
for _ in range(10):
pass
if
statements can be merged (PTC-W0048):
if condition1:
if condition2:
dosomething()
Function/method with an empty body (PTC-W0049):
def my_func(foo="Noncompliant"):
pass
class MyClass:
def mymethod1(self, foo="Noncompliant"):
pass
Duplicate elements during set declaration (PTC-W0050):
my_set = {"one", "two", "one"}
def myfunc(a, b, c):
my_set = {a, b, a, c}
Abstract method does not raise NotImplementedError
(PTC-W0053):
import abc
class Vehicle:
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def method_to_implement(self, input):
return
Special method should return NotImplemented
(PTC-W0054):
class A:
def __init__(self, val):
self.val = val
def __add__(self, other):
raise NotImplementedError
class B:
def __init__(self, val):
self.val = val
def __add__(self, other):
return self.val + other.val
def __radd__(self, other):
return self.val + other.val
A(1) + B(1) # This will raise `NotImplementedError`
Audit Issue: Unverified server certificate (PTC-W6001):
import ssl
context = ssl.create_default_context()
ctx3.verify_mode = ssl.CERT_NONE # Setting this won't verify the certificate
Audit Issue: Unverified server hostname (PTC-W6002):
import ssl
context = ssl._create_stdlib_context() # by default hostname verification is not done
Autofix Additions:
The Python analyzer can now automatically fix 6 more issues.
PTC-W0043:
This fixer removes the unnecessary
del
statement from the local scope.
PTC-W0044:
This changes the use of
len(seq) - 1
to get the last element.
So, an occurrence likeseq[len(seq)-1]
would be changed toseq[-1]
.
PTC-W0045:
This fixer converts the
async
magic method into a regular method.
PTC-W0050:
This fixer removes duplicate elements during a
set
declaration
PTC-W9006:
Provide
blank=True
for a field withnull=True
to Django fields that allownull
but notblank
.
PTC-W9007:
Remove redundant
default=None
from Django fields.