mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Merge pull request #20263 from joefarebrother/python-qual-exceptions
Python: Modernize the Unreachable Except Block query
This commit is contained in:
738
python/ql/lib/semmle/python/frameworks/builtins.model.yml
Normal file
738
python/ql/lib/semmle/python/frameworks/builtins.model.yml
Normal file
@@ -0,0 +1,738 @@
|
||||
# process-builtin-exceptions 0.0.1; Python 3.11.0rc2
|
||||
extensions:
|
||||
- addsTo:
|
||||
extensible: typeModel
|
||||
pack: codeql/python-all
|
||||
data:
|
||||
- - builtins.PendingDeprecationWarning~Subclass
|
||||
- builtins.PendingDeprecationWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.PendingDeprecationWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.PendingDeprecationWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.PendingDeprecationWarning
|
||||
- ''
|
||||
- - builtins.UnicodeWarning~Subclass
|
||||
- builtins.UnicodeWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.UnicodeWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.UnicodeWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.UnicodeWarning
|
||||
- ''
|
||||
- - builtins.StopAsyncIteration~Subclass
|
||||
- builtins.StopAsyncIteration
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.StopAsyncIteration
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.StopAsyncIteration
|
||||
- ''
|
||||
- - builtins.KeyboardInterrupt~Subclass
|
||||
- builtins.KeyboardInterrupt
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.KeyboardInterrupt
|
||||
- ''
|
||||
- - builtins.ConnectionError~Subclass
|
||||
- builtins.ConnectionError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.ConnectionError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ConnectionError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ConnectionError
|
||||
- ''
|
||||
- - builtins.ConnectionResetError~Subclass
|
||||
- builtins.ConnectionResetError
|
||||
- ''
|
||||
- - builtins.ConnectionError~Subclass
|
||||
- builtins.ConnectionResetError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.ConnectionResetError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ConnectionResetError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ConnectionResetError
|
||||
- ''
|
||||
- - builtins.InterruptedError~Subclass
|
||||
- builtins.InterruptedError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.InterruptedError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.InterruptedError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.InterruptedError
|
||||
- ''
|
||||
- - builtins.RuntimeError~Subclass
|
||||
- builtins.RuntimeError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.RuntimeError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.RuntimeError
|
||||
- ''
|
||||
- - builtins.AttributeError~Subclass
|
||||
- builtins.AttributeError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.AttributeError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.AttributeError
|
||||
- ''
|
||||
- - builtins.IndexError~Subclass
|
||||
- builtins.IndexError
|
||||
- ''
|
||||
- - builtins.LookupError~Subclass
|
||||
- builtins.IndexError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.IndexError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.IndexError
|
||||
- ''
|
||||
- - builtins.UnicodeDecodeError~Subclass
|
||||
- builtins.UnicodeDecodeError
|
||||
- ''
|
||||
- - builtins.UnicodeError~Subclass
|
||||
- builtins.UnicodeDecodeError
|
||||
- ''
|
||||
- - builtins.ValueError~Subclass
|
||||
- builtins.UnicodeDecodeError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.UnicodeDecodeError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.UnicodeDecodeError
|
||||
- ''
|
||||
- - builtins.ExceptionGroup~Subclass
|
||||
- builtins.ExceptionGroup
|
||||
- ''
|
||||
- - builtins.BaseExceptionGroup~Subclass
|
||||
- builtins.ExceptionGroup
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ExceptionGroup
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ExceptionGroup
|
||||
- ''
|
||||
- - builtins.OverflowError~Subclass
|
||||
- builtins.OverflowError
|
||||
- ''
|
||||
- - builtins.ArithmeticError~Subclass
|
||||
- builtins.OverflowError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.OverflowError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.OverflowError
|
||||
- ''
|
||||
- - builtins.BufferError~Subclass
|
||||
- builtins.BufferError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.BufferError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.BufferError
|
||||
- ''
|
||||
- - builtins.SyntaxWarning~Subclass
|
||||
- builtins.SyntaxWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.SyntaxWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.SyntaxWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.SyntaxWarning
|
||||
- ''
|
||||
- - builtins.BytesWarning~Subclass
|
||||
- builtins.BytesWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.BytesWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.BytesWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.BytesWarning
|
||||
- ''
|
||||
- - builtins.StopIteration~Subclass
|
||||
- builtins.StopIteration
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.StopIteration
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.StopIteration
|
||||
- ''
|
||||
- - builtins.ImportError~Subclass
|
||||
- builtins.ImportError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ImportError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ImportError
|
||||
- ''
|
||||
- - builtins.ChildProcessError~Subclass
|
||||
- builtins.ChildProcessError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.ChildProcessError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ChildProcessError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ChildProcessError
|
||||
- ''
|
||||
- - builtins.FileExistsError~Subclass
|
||||
- builtins.FileExistsError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.FileExistsError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.FileExistsError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.FileExistsError
|
||||
- ''
|
||||
- - builtins.PermissionError~Subclass
|
||||
- builtins.PermissionError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.PermissionError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.PermissionError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.PermissionError
|
||||
- ''
|
||||
- - builtins.RecursionError~Subclass
|
||||
- builtins.RecursionError
|
||||
- ''
|
||||
- - builtins.RuntimeError~Subclass
|
||||
- builtins.RecursionError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.RecursionError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.RecursionError
|
||||
- ''
|
||||
- - builtins.SyntaxError~Subclass
|
||||
- builtins.SyntaxError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.SyntaxError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.SyntaxError
|
||||
- ''
|
||||
- - builtins.KeyError~Subclass
|
||||
- builtins.KeyError
|
||||
- ''
|
||||
- - builtins.LookupError~Subclass
|
||||
- builtins.KeyError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.KeyError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.KeyError
|
||||
- ''
|
||||
- - builtins.UnicodeTranslateError~Subclass
|
||||
- builtins.UnicodeTranslateError
|
||||
- ''
|
||||
- - builtins.UnicodeError~Subclass
|
||||
- builtins.UnicodeTranslateError
|
||||
- ''
|
||||
- - builtins.ValueError~Subclass
|
||||
- builtins.UnicodeTranslateError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.UnicodeTranslateError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.UnicodeTranslateError
|
||||
- ''
|
||||
- - builtins.ZeroDivisionError~Subclass
|
||||
- builtins.ZeroDivisionError
|
||||
- ''
|
||||
- - builtins.ArithmeticError~Subclass
|
||||
- builtins.ZeroDivisionError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ZeroDivisionError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ZeroDivisionError
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.Warning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.Warning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.Warning
|
||||
- ''
|
||||
- - builtins.RuntimeWarning~Subclass
|
||||
- builtins.RuntimeWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.RuntimeWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.RuntimeWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.RuntimeWarning
|
||||
- ''
|
||||
- - builtins.EncodingWarning~Subclass
|
||||
- builtins.EncodingWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.EncodingWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.EncodingWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.EncodingWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.BaseException
|
||||
- ''
|
||||
- - builtins.GeneratorExit~Subclass
|
||||
- builtins.GeneratorExit
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.GeneratorExit
|
||||
- ''
|
||||
- - builtins.ModuleNotFoundError~Subclass
|
||||
- builtins.ModuleNotFoundError
|
||||
- ''
|
||||
- - builtins.ImportError~Subclass
|
||||
- builtins.ModuleNotFoundError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ModuleNotFoundError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ModuleNotFoundError
|
||||
- ''
|
||||
- - builtins.BrokenPipeError~Subclass
|
||||
- builtins.BrokenPipeError
|
||||
- ''
|
||||
- - builtins.ConnectionError~Subclass
|
||||
- builtins.BrokenPipeError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.BrokenPipeError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.BrokenPipeError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.BrokenPipeError
|
||||
- ''
|
||||
- - builtins.FileNotFoundError~Subclass
|
||||
- builtins.FileNotFoundError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.FileNotFoundError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.FileNotFoundError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.FileNotFoundError
|
||||
- ''
|
||||
- - builtins.ProcessLookupError~Subclass
|
||||
- builtins.ProcessLookupError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.ProcessLookupError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ProcessLookupError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ProcessLookupError
|
||||
- ''
|
||||
- - builtins.NotImplementedError~Subclass
|
||||
- builtins.NotImplementedError
|
||||
- ''
|
||||
- - builtins.RuntimeError~Subclass
|
||||
- builtins.NotImplementedError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.NotImplementedError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.NotImplementedError
|
||||
- ''
|
||||
- - builtins.IndentationError~Subclass
|
||||
- builtins.IndentationError
|
||||
- ''
|
||||
- - builtins.SyntaxError~Subclass
|
||||
- builtins.IndentationError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.IndentationError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.IndentationError
|
||||
- ''
|
||||
- - builtins.ValueError~Subclass
|
||||
- builtins.ValueError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ValueError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ValueError
|
||||
- ''
|
||||
- - builtins.AssertionError~Subclass
|
||||
- builtins.AssertionError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.AssertionError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.AssertionError
|
||||
- ''
|
||||
- - builtins.SystemError~Subclass
|
||||
- builtins.SystemError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.SystemError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.SystemError
|
||||
- ''
|
||||
- - builtins.UserWarning~Subclass
|
||||
- builtins.UserWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.UserWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.UserWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.UserWarning
|
||||
- ''
|
||||
- - builtins.FutureWarning~Subclass
|
||||
- builtins.FutureWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.FutureWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.FutureWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.FutureWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.Exception
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.Exception
|
||||
- ''
|
||||
- - builtins.ResourceWarning~Subclass
|
||||
- builtins.ResourceWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.ResourceWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ResourceWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ResourceWarning
|
||||
- ''
|
||||
- - builtins.SystemExit~Subclass
|
||||
- builtins.SystemExit
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.SystemExit
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.OSError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.OSError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.OSError
|
||||
- ''
|
||||
- - builtins.ConnectionAbortedError~Subclass
|
||||
- builtins.ConnectionAbortedError
|
||||
- ''
|
||||
- - builtins.ConnectionError~Subclass
|
||||
- builtins.ConnectionAbortedError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.ConnectionAbortedError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ConnectionAbortedError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ConnectionAbortedError
|
||||
- ''
|
||||
- - builtins.IsADirectoryError~Subclass
|
||||
- builtins.IsADirectoryError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.IsADirectoryError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.IsADirectoryError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.IsADirectoryError
|
||||
- ''
|
||||
- - builtins.TimeoutError~Subclass
|
||||
- builtins.TimeoutError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.TimeoutError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.TimeoutError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.TimeoutError
|
||||
- ''
|
||||
- - builtins.NameError~Subclass
|
||||
- builtins.NameError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.NameError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.NameError
|
||||
- ''
|
||||
- - builtins.TabError~Subclass
|
||||
- builtins.TabError
|
||||
- ''
|
||||
- - builtins.IndentationError~Subclass
|
||||
- builtins.TabError
|
||||
- ''
|
||||
- - builtins.SyntaxError~Subclass
|
||||
- builtins.TabError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.TabError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.TabError
|
||||
- ''
|
||||
- - builtins.UnicodeError~Subclass
|
||||
- builtins.UnicodeError
|
||||
- ''
|
||||
- - builtins.ValueError~Subclass
|
||||
- builtins.UnicodeError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.UnicodeError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.UnicodeError
|
||||
- ''
|
||||
- - builtins.ArithmeticError~Subclass
|
||||
- builtins.ArithmeticError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ArithmeticError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ArithmeticError
|
||||
- ''
|
||||
- - builtins.ReferenceError~Subclass
|
||||
- builtins.ReferenceError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ReferenceError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ReferenceError
|
||||
- ''
|
||||
- - builtins.DeprecationWarning~Subclass
|
||||
- builtins.DeprecationWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.DeprecationWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.DeprecationWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.DeprecationWarning
|
||||
- ''
|
||||
- - builtins.ImportWarning~Subclass
|
||||
- builtins.ImportWarning
|
||||
- ''
|
||||
- - builtins.Warning~Subclass
|
||||
- builtins.ImportWarning
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ImportWarning
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ImportWarning
|
||||
- ''
|
||||
- - builtins.TypeError~Subclass
|
||||
- builtins.TypeError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.TypeError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.TypeError
|
||||
- ''
|
||||
- - builtins.BaseExceptionGroup~Subclass
|
||||
- builtins.BaseExceptionGroup
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.BaseExceptionGroup
|
||||
- ''
|
||||
- - builtins.BlockingIOError~Subclass
|
||||
- builtins.BlockingIOError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.BlockingIOError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.BlockingIOError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.BlockingIOError
|
||||
- ''
|
||||
- - builtins.ConnectionRefusedError~Subclass
|
||||
- builtins.ConnectionRefusedError
|
||||
- ''
|
||||
- - builtins.ConnectionError~Subclass
|
||||
- builtins.ConnectionRefusedError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.ConnectionRefusedError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.ConnectionRefusedError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.ConnectionRefusedError
|
||||
- ''
|
||||
- - builtins.NotADirectoryError~Subclass
|
||||
- builtins.NotADirectoryError
|
||||
- ''
|
||||
- - builtins.OSError~Subclass
|
||||
- builtins.NotADirectoryError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.NotADirectoryError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.NotADirectoryError
|
||||
- ''
|
||||
- - builtins.EOFError~Subclass
|
||||
- builtins.EOFError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.EOFError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.EOFError
|
||||
- ''
|
||||
- - builtins.UnboundLocalError~Subclass
|
||||
- builtins.UnboundLocalError
|
||||
- ''
|
||||
- - builtins.NameError~Subclass
|
||||
- builtins.UnboundLocalError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.UnboundLocalError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.UnboundLocalError
|
||||
- ''
|
||||
- - builtins.LookupError~Subclass
|
||||
- builtins.LookupError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.LookupError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.LookupError
|
||||
- ''
|
||||
- - builtins.UnicodeEncodeError~Subclass
|
||||
- builtins.UnicodeEncodeError
|
||||
- ''
|
||||
- - builtins.UnicodeError~Subclass
|
||||
- builtins.UnicodeEncodeError
|
||||
- ''
|
||||
- - builtins.ValueError~Subclass
|
||||
- builtins.UnicodeEncodeError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.UnicodeEncodeError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.UnicodeEncodeError
|
||||
- ''
|
||||
- - builtins.FloatingPointError~Subclass
|
||||
- builtins.FloatingPointError
|
||||
- ''
|
||||
- - builtins.ArithmeticError~Subclass
|
||||
- builtins.FloatingPointError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.FloatingPointError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.FloatingPointError
|
||||
- ''
|
||||
- - builtins.MemoryError~Subclass
|
||||
- builtins.MemoryError
|
||||
- ''
|
||||
- - builtins.Exception~Subclass
|
||||
- builtins.MemoryError
|
||||
- ''
|
||||
- - builtins.BaseException~Subclass
|
||||
- builtins.MemoryError
|
||||
- ''
|
||||
@@ -25,11 +25,11 @@ is a super class of <code>Error</code>.
|
||||
|
||||
<p>Reorganize the <code>except</code> blocks so that the more specific <code>except</code>
|
||||
is defined first. Alternatively, if the more specific <code>except</code> block is
|
||||
no longer required then it should be deleted.</p>
|
||||
no longer required, then it should be deleted.</p>
|
||||
|
||||
</recommendation>
|
||||
<example>
|
||||
<p>In this example the <code>except Exception:</code> will handle <code>AttributeError</code> preventing the
|
||||
<p>In the following example, the <code>except Exception:</code> will handle <code>AttributeError</code> preventing the
|
||||
subsequent handler from ever executing.</p>
|
||||
<sample src="IncorrectExceptOrder.py" />
|
||||
|
||||
@@ -37,8 +37,8 @@ subsequent handler from ever executing.</p>
|
||||
</example>
|
||||
<references>
|
||||
|
||||
<li>Python Language Reference: <a href="http://docs.python.org/2.7/reference/compound_stmts.html#try">The try statement</a>,
|
||||
<a href="http://docs.python.org/2.7/reference/executionmodel.html#exceptions">Exceptions</a>.</li>
|
||||
<li>Python Language Reference: <a href="http://docs.python.org/3/reference/compound_stmts.html#try">The try statement</a>,
|
||||
<a href="http://docs.python.org/3/reference/executionmodel.html#exceptions">Exceptions</a>.</li>
|
||||
|
||||
|
||||
</references>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @name Unreachable 'except' block
|
||||
* @name Unreachable `except` block
|
||||
* @description Handling general exceptions before specific exceptions means that the specific
|
||||
* handlers are never executed.
|
||||
* @kind problem
|
||||
@@ -14,22 +14,95 @@
|
||||
*/
|
||||
|
||||
import python
|
||||
import semmle.python.dataflow.new.internal.DataFlowDispatch
|
||||
import semmle.python.ApiGraphs
|
||||
import semmle.python.frameworks.data.internal.ApiGraphModels
|
||||
|
||||
predicate incorrect_except_order(ExceptStmt ex1, ClassValue cls1, ExceptStmt ex2, ClassValue cls2) {
|
||||
predicate builtinException(string name) {
|
||||
typeModel("builtins.BaseException~Subclass", "builtins." + name, "")
|
||||
}
|
||||
|
||||
predicate builtinExceptionSubclass(string base, string sub) {
|
||||
typeModel("builtins." + base + "~Subclass", "builtins." + sub, "")
|
||||
}
|
||||
|
||||
newtype TExceptType =
|
||||
TClass(Class c) or
|
||||
TBuiltin(string name) { builtinException(name) }
|
||||
|
||||
class ExceptType extends TExceptType {
|
||||
Class asClass() { this = TClass(result) }
|
||||
|
||||
string asBuiltinName() { this = TBuiltin(result) }
|
||||
|
||||
predicate isBuiltin() { this = TBuiltin(_) }
|
||||
|
||||
string getName() {
|
||||
result = this.asClass().getName()
|
||||
or
|
||||
result = this.asBuiltinName()
|
||||
}
|
||||
|
||||
string toString() { result = this.getName() }
|
||||
|
||||
DataFlow::Node getAUse() {
|
||||
result = classTracker(this.asClass())
|
||||
or
|
||||
API::builtin(this.asBuiltinName()).asSource().flowsTo(result)
|
||||
}
|
||||
|
||||
ExceptType getADirectSuperclass() {
|
||||
result.asClass() = getADirectSuperclass(this.asClass())
|
||||
or
|
||||
result.isBuiltin() and
|
||||
result.getAUse().asExpr() = this.asClass().getABase()
|
||||
or
|
||||
builtinExceptionSubclass(result.asBuiltinName(), this.asBuiltinName()) and
|
||||
this != result
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this element is at the specified location.
|
||||
* The location spans column `startColumn` of line `startLine` to
|
||||
* column `endColumn` of line `endLine` in file `filepath`.
|
||||
* For more information, see
|
||||
* [Providing locations in CodeQL queries](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
|
||||
*/
|
||||
predicate hasLocationInfo(
|
||||
string filePath, int startLine, int startColumn, int endLine, int endColumn
|
||||
) {
|
||||
this.asClass()
|
||||
.getLocation()
|
||||
.hasLocationInfo(filePath, startLine, startColumn, endLine, endColumn)
|
||||
or
|
||||
this.isBuiltin() and
|
||||
filePath = "" and
|
||||
startLine = 0 and
|
||||
startColumn = 0 and
|
||||
endLine = 0 and
|
||||
endColumn = 0
|
||||
}
|
||||
}
|
||||
|
||||
predicate incorrectExceptOrder(ExceptStmt ex1, ExceptType cls1, ExceptStmt ex2, ExceptType cls2) {
|
||||
exists(int i, int j, Try t |
|
||||
ex1 = t.getHandler(i) and
|
||||
ex2 = t.getHandler(j) and
|
||||
i < j and
|
||||
cls1 = except_class(ex1) and
|
||||
cls2 = except_class(ex2) and
|
||||
cls1 = cls2.getASuperType()
|
||||
cls1 = exceptClass(ex1) and
|
||||
cls2 = exceptClass(ex2) and
|
||||
cls1 = cls2.getADirectSuperclass*()
|
||||
)
|
||||
}
|
||||
|
||||
ClassValue except_class(ExceptStmt ex) { ex.getType().pointsTo(result) }
|
||||
ExceptType exceptClass(ExceptStmt ex) { ex.getType() = result.getAUse().asExpr() }
|
||||
|
||||
from ExceptStmt ex1, ClassValue cls1, ExceptStmt ex2, ClassValue cls2
|
||||
where incorrect_except_order(ex1, cls1, ex2, cls2)
|
||||
select ex2,
|
||||
"Except block for $@ is unreachable; the more general $@ for $@ will always be executed in preference.",
|
||||
cls2, cls2.getName(), ex1, "except block", cls1, cls1.getName()
|
||||
from ExceptStmt ex1, ExceptType cls1, ExceptStmt ex2, ExceptType cls2, string msg
|
||||
where
|
||||
incorrectExceptOrder(ex1, cls1, ex2, cls2) and
|
||||
if cls1 = cls2
|
||||
then msg = "This except block handling $@ is unreachable; as $@ also handles $@."
|
||||
else
|
||||
msg =
|
||||
"This except block handling $@ is unreachable; as $@ for the more general $@ always subsumes it."
|
||||
select ex2, msg, cls2, cls2.getName(), ex1, "this except block", cls1, cls1.getName()
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
from shared_subclass_functions import wrap_in_template
|
||||
import sys
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
|
||||
py_version = sys.version.split()[0]
|
||||
VERSION = f"process-builtin-exceptions 0.0.1; Python {py_version}"
|
||||
|
||||
builtins_model_path = Path(__file__).parent.parent.parent.parent / "lib/semmle/python/frameworks/builtins.model.yml"
|
||||
|
||||
def write_data(data, path: Path):
|
||||
f = path.open("w+")
|
||||
f.write(f"# {VERSION}\n")
|
||||
yaml.dump(data, indent=2, stream=f, Dumper=yaml.CDumper)
|
||||
|
||||
builtin_names = dir(__builtins__)
|
||||
builtin_dict = {x: getattr(__builtins__,x) for x in builtin_names}
|
||||
|
||||
|
||||
builtin_exceptions = {v for v in builtin_dict.values() if type(v) is type and issubclass(v, BaseException)}
|
||||
|
||||
data = []
|
||||
for sub in builtin_exceptions:
|
||||
for base in sub.__mro__:
|
||||
if issubclass(base, BaseException):
|
||||
basename = base.__name__
|
||||
subname = sub.__name__
|
||||
row = [f"builtins.{basename}~Subclass", f"builtins.{subname}", ""]
|
||||
data.append(row)
|
||||
|
||||
write_data(wrap_in_template(data), builtins_model_path)
|
||||
@@ -1,2 +1,2 @@
|
||||
| exceptions_test.py:7:5:7:11 | ExceptStmt | Except block directly handles BaseException. |
|
||||
| exceptions_test.py:71:5:71:25 | ExceptStmt | Except block directly handles BaseException. |
|
||||
| exceptions_test.py:97:5:97:25 | ExceptStmt | Except block directly handles BaseException. |
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
| exceptions_test.py:7:5:7:11 | ExceptStmt | 'except' clause does nothing but pass and there is no explanatory comment. |
|
||||
| exceptions_test.py:13:5:13:21 | ExceptStmt | 'except' clause does nothing but pass and there is no explanatory comment. |
|
||||
| exceptions_test.py:72:1:72:18 | ExceptStmt | 'except' clause does nothing but pass and there is no explanatory comment. |
|
||||
| exceptions_test.py:85:1:85:17 | ExceptStmt | 'except' clause does nothing but pass and there is no explanatory comment. |
|
||||
| exceptions_test.py:89:1:89:17 | ExceptStmt | 'except' clause does nothing but pass and there is no explanatory comment. |
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
| exceptions_test.py:51:5:51:25 | ExceptStmt | Non-exception $@ in exception handler which will never match raised exception. | exceptions_test.py:33:1:33:28 | ControlFlowNode for ClassExpr | class 'NotException1' |
|
||||
| exceptions_test.py:54:5:54:25 | ExceptStmt | Non-exception $@ in exception handler which will never match raised exception. | exceptions_test.py:36:1:36:28 | ControlFlowNode for ClassExpr | class 'NotException2' |
|
||||
| exceptions_test.py:112:5:112:22 | ExceptStmt | Non-exception $@ in exception handler which will never match raised exception. | exceptions_test.py:107:12:107:14 | ControlFlowNode for FloatLiteral | instance of 'float' |
|
||||
| exceptions_test.py:138:5:138:22 | ExceptStmt | Non-exception $@ in exception handler which will never match raised exception. | exceptions_test.py:133:12:133:14 | ControlFlowNode for FloatLiteral | instance of 'float' |
|
||||
| pypy_test.py:14:5:14:14 | ExceptStmt | Non-exception $@ in exception handler which will never match raised exception. | pypy_test.py:14:12:14:13 | ControlFlowNode for IntegerLiteral | instance of 'int' |
|
||||
|
||||
@@ -1 +1 @@
|
||||
| exceptions_test.py:64:1:64:22 | ExceptStmt | Except block for $@ is unreachable; the more general $@ for $@ will always be executed in preference. | file://:0:0:0:0 | builtin-class AttributeError | AttributeError | exceptions_test.py:62:1:62:17 | ExceptStmt | except block | file://:0:0:0:0 | builtin-class Exception | Exception |
|
||||
| exceptions_test.py:64:1:64:22 | ExceptStmt | This except block handling $@ is unreachable; as $@ for the more general $@ always subsumes it. | file://:0:0:0:0 | AttributeError | AttributeError | exceptions_test.py:62:1:62:17 | ExceptStmt | this except block | file://:0:0:0:0 | Exception | Exception |
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
Exceptions/IncorrectExceptOrder.ql
|
||||
query: Exceptions/IncorrectExceptOrder.ql
|
||||
postprocess: utils/test/InlineExpectationsTestQuery.ql
|
||||
@@ -1,2 +1,2 @@
|
||||
| exceptions_test.py:170:11:170:24 | NotImplemented | NotImplemented is not an Exception. Did you mean NotImplementedError? |
|
||||
| exceptions_test.py:173:11:173:26 | NotImplemented() | NotImplemented is not an Exception. Did you mean NotImplementedError? |
|
||||
| exceptions_test.py:196:11:196:24 | NotImplemented | NotImplemented is not an Exception. Did you mean NotImplementedError? |
|
||||
| exceptions_test.py:199:11:199:26 | NotImplemented() | NotImplemented is not an Exception. Did you mean NotImplementedError? |
|
||||
|
||||
@@ -61,8 +61,34 @@ try:
|
||||
val.attr
|
||||
except Exception:
|
||||
print (2)
|
||||
except AttributeError:
|
||||
except AttributeError: # $Alert[py/unreachable-except]
|
||||
print (3)
|
||||
|
||||
class MyExc(ValueError):
|
||||
pass
|
||||
|
||||
try:
|
||||
pass
|
||||
except ValueError:
|
||||
pass
|
||||
except MyExc: # $MISSING:Alert[py/unreachable-except] # Missing due to dataflow limitiation preventing MyExc from being tracked here.
|
||||
pass
|
||||
|
||||
class MyBaseExc(Exception):
|
||||
pass
|
||||
|
||||
class MySubExc(MyBaseExc):
|
||||
pass
|
||||
|
||||
try:
|
||||
pass
|
||||
except MyBaseExc:
|
||||
pass
|
||||
except MySubExc: # $MISSING:Alert[py/unreachable-except] # Missing due to dataflow limitation preventing MyExc from being tracked here.
|
||||
pass
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
#Catch BaseException
|
||||
def catch_base_exception():
|
||||
|
||||
Reference in New Issue
Block a user