Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE qhelp PUBLIC
"-//Semmle//qhelp//EN"
"qhelp.dtd">
<qhelp>


<overview>
<p>A class name that begins with a lowercase letter does not follow standard
naming conventions. This decreases code readability. For example, <code>class background</code>.
</p>

</overview>
<recommendation>

<p>
Write the class name beginning with an uppercase letter. For example, <code>class Background</code>.
</p>

</recommendation>

<references>

<li>
Guido van Rossum, Barry Warsaw, Nick Coghlan <em>PEP 8 -- Style Guide for Python Code</em>
<a href="https://www.python.org/dev/peps/pep-0008/#class-names">Python Class Names</a>
</li>

</references>

</qhelp>
28 changes: 28 additions & 0 deletions python/ql/src/experimental/Classes/NamingConventionsClasses.ql
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* @name Misnamed class
* @description A class name that begins with a lowercase letter decreases readability.
* @kind problem
* @problem.severity recommendation
* @id py/misnamed-class
* @tags maintainability
*/

import python

predicate lower_case_class(Class c) {
exists(string first_char |
first_char = c.getName().prefix(1) and
not first_char = first_char.toUpperCase()
)
}

from Class c
where
c.inSource() and
lower_case_class(c) and
not exists(Class c1 |
c1 != c and
c1.getLocation().getFile() = c.getLocation().getFile() and
lower_case_class(c1)
)
select c, "Class names should start in uppercase."
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE qhelp PUBLIC
"-//Semmle//qhelp//EN"
"qhelp.dtd">
<qhelp>


<overview>
<p>A function name that begins with an uppercase letter does not follow standard
naming conventions. This decreases code readability. For example, <code>Jump</code>.
</p>

</overview>
<recommendation>

<p>
Write the function name beginning with an lowercase letter. For example, <code>jump</code>.
</p>

</recommendation>

<references>

<li>
Guido van Rossum, Barry Warsaw, Nick Coghlan <em>PEP 8 -- Style Guide for Python Code</em>
<a href="https://www.python.org/dev/peps/pep-0008/#function-and-variable-names">Python Function and Variable Names</a>
</li>

</references>

</qhelp>
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* @name Misnamed function
* @description A function name that begins with an uppercase letter decreases readability.
* @kind problem
* @problem.severity recommendation
* @id py/misnamed-function
* @tags maintainability
*/

import python

predicate upper_case_function(Function func) {
exists(string first_char |
first_char = func.getName().prefix(1) and
not first_char = first_char.toLowerCase()
)
}

from Function func
where
func.inSource() and
upper_case_function(func) and
not exists(Function func1 |
func1 != func and
func1.getLocation().getFile() = func.getLocation().getFile() and
upper_case_function(func1)
)
select func, "Function names should start in lowercase."
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
| NamingConventionsClasses.py:2:1:2:14 | Class badName | Class names should start in uppercase. |
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# BAD, do not start class or interface name with lowercase letter
class badName:

def hello(self):
print("hello")

# Good, class name starts with capital letter
class GoodName:

def hello(self):
print("hello")
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
experimental/Classes/NamingConventionsClasses.ql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
| NamingConventionsFunctions.py:4:5:4:25 | Function HelloWorld | Function names should start in lowercase. |
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Test:

# BAD, do not start function name with uppercase letter
def HelloWorld(self):
print("hello world")

# GOOD, function name starts with lowercase letter
def hello_world(self):
print("hello world")
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
experimental/Functions/NamingConventionsFunctions.ql