qgis-plugin-analyzer 1.3.0__tar.gz → 1.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/PKG-INFO +39 -3
  2. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/README.md +38 -2
  3. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/pyproject.toml +1 -1
  4. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/PKG-INFO +39 -3
  5. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/LICENSE +0 -0
  6. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/setup.cfg +0 -0
  7. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/__init__.py +0 -0
  8. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/__init__.py +0 -0
  9. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/cli.py +0 -0
  10. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/engine.py +0 -0
  11. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/fixer.py +0 -0
  12. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/models/__init__.py +0 -0
  13. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/models/analysis_models.py +0 -0
  14. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/__init__.py +0 -0
  15. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/html_reporter.py +0 -0
  16. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/markdown_reporter.py +0 -0
  17. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/summary_reporter.py +0 -0
  18. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/rules/__init__.py +0 -0
  19. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/rules/modernization_rules.py +0 -0
  20. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/rules/qgis_rules.py +0 -0
  21. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/scanner.py +0 -0
  22. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/semantic.py +0 -0
  23. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/transformers.py +0 -0
  24. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/__init__.py +0 -0
  25. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/ast_utils.py +0 -0
  26. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/config_utils.py +0 -0
  27. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/logging_utils.py +0 -0
  28. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/path_utils.py +0 -0
  29. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/performance_utils.py +0 -0
  30. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/validators.py +0 -0
  31. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/SOURCES.txt +0 -0
  32. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/dependency_links.txt +0 -0
  33. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/entry_points.txt +0 -0
  34. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/top_level.txt +0 -0
  35. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_analyzer.py +0 -0
  36. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_fixer.py +0 -0
  37. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_high_complexity.py +0 -0
  38. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_safety.py +0 -0
  39. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_scanner.py +0 -0
  40. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_security.py +0 -0
  41. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_semantic.py +0 -0
  42. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_validators.py +0 -0
  43. {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_vulnerability.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qgis-plugin-analyzer
3
- Version: 1.3.0
3
+ Version: 1.4.0
4
4
  Summary: A professional static analysis tool for QGIS (PyQGIS) plugins
5
5
  Author-email: geociencio <juanbernales@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -27,6 +27,8 @@ License-File: LICENSE
27
27
  Dynamic: license-file
28
28
 
29
29
  # QGIS Plugin Analyzer 🛡️
30
+
31
+ 👉 **[View Full Rules Catalog (RULES.md)](RULES.md)**
30
32
  ![GitHub release (latest by date)](https://img.shields.io/github/v/release/geociencio/qgis-plugin-analyzer?color=blue&logo=github)
31
33
  ![Python Version](https://img.shields.io/badge/python-3.8%2B-blue?logo=python)
32
34
  ![License](https://img.shields.io/badge/License-GPLv3-blue.svg)
@@ -86,6 +88,11 @@ If you have [uv](https://github.com/astral-sh/uv) installed, you can install the
86
88
  uv tool install git+https://github.com/geociencio/qgis-plugin-analyzer.git
87
89
  ```
88
90
 
91
+ **2. Standard pip installation (Git):**
92
+ ```bash
93
+ pip install git+https://github.com/geociencio/qgis-plugin-analyzer.git
94
+ ```
95
+
89
96
  **2. Local installation for development:**
90
97
  ```bash
91
98
  git clone https://github.com/geociencio/qgis-plugin-analyzer
@@ -122,10 +129,9 @@ You can run `qgis-plugin-analyzer` automatically before every commit to ensure q
122
129
 
123
130
  ```yaml
124
131
  - repo: https://github.com/geociencio/qgis-plugin-analyzer
125
- rev: v1.1.0 # Use the latest tag
132
+ rev: v1.4.0 # Use the latest tag
126
133
  hooks:
127
134
  - id: qgis-plugin-analyzer
128
- - id: qgis-plugin-analyzer
129
135
  ```
130
136
 
131
137
  ## 🤖 GitHub Action
@@ -143,8 +149,38 @@ steps:
143
149
  args: --profile release
144
150
  ```
145
151
 
152
+ ## ⚙️ Configuration (`pyproject.toml`)
153
+
154
+ You can customize the analyzer's behavior using a `[tool.qgis-analyzer]` section in your `pyproject.toml`.
155
+
156
+ ```toml
157
+ [tool.qgis-analyzer]
158
+ # Profiles allow different settings for CI vs Local
159
+ [tool.qgis-analyzer.profiles.default]
160
+ strict = false
161
+ generate_html = false # CLI default
162
+
163
+ [tool.qgis-analyzer.profiles.release]
164
+ strict = true
165
+ fail_on_error = true
166
+
167
+ [tool.qgis-analyzer.profiles.default.rules]
168
+ QGS101 = "error" # Ban specific module imports
169
+ QGS105 = "warning" # Warn on iface usage
170
+ QGS303 = "ignore" # Ignore resource path checks
171
+ ```
172
+
173
+ ## ⚠️ Technical Limitations
174
+
175
+ This tool performs **Static Analysis** (AST & Regex parsing). It does **not** execute your code or load QGIS libraries.
176
+ - **Dynamic Imports**: Imports inside functions or conditional blocks might be analyzed differently than top-level imports.
177
+ - **Runtime Validation**: Checks like "Missing Resources" rely on static string analysis of `.qrc` files and path strings. It cannot verify resources loaded dynamically at runtime.
178
+ - **False Positives**: While we strive for accuracy, complex meta-programming or unusual patterns might trigger false positives. Use `# noqa` or `.analyzerignore` to handle these cases.
179
+
146
180
  ## ⌨️ Full CLI Reference
147
181
 
182
+ > **Note**: The Python package is named `qgis-plugin-analyzer`, but the command-line tool is installed as `qgis-analyzer`.
183
+
148
184
  ### `qgis-analyzer analyze`
149
185
  Audits an existing QGIS plugin repository.
150
186
 
@@ -1,4 +1,6 @@
1
1
  # QGIS Plugin Analyzer 🛡️
2
+
3
+ 👉 **[View Full Rules Catalog (RULES.md)](RULES.md)**
2
4
  ![GitHub release (latest by date)](https://img.shields.io/github/v/release/geociencio/qgis-plugin-analyzer?color=blue&logo=github)
3
5
  ![Python Version](https://img.shields.io/badge/python-3.8%2B-blue?logo=python)
4
6
  ![License](https://img.shields.io/badge/License-GPLv3-blue.svg)
@@ -58,6 +60,11 @@ If you have [uv](https://github.com/astral-sh/uv) installed, you can install the
58
60
  uv tool install git+https://github.com/geociencio/qgis-plugin-analyzer.git
59
61
  ```
60
62
 
63
+ **2. Standard pip installation (Git):**
64
+ ```bash
65
+ pip install git+https://github.com/geociencio/qgis-plugin-analyzer.git
66
+ ```
67
+
61
68
  **2. Local installation for development:**
62
69
  ```bash
63
70
  git clone https://github.com/geociencio/qgis-plugin-analyzer
@@ -94,10 +101,9 @@ You can run `qgis-plugin-analyzer` automatically before every commit to ensure q
94
101
 
95
102
  ```yaml
96
103
  - repo: https://github.com/geociencio/qgis-plugin-analyzer
97
- rev: v1.1.0 # Use the latest tag
104
+ rev: v1.4.0 # Use the latest tag
98
105
  hooks:
99
106
  - id: qgis-plugin-analyzer
100
- - id: qgis-plugin-analyzer
101
107
  ```
102
108
 
103
109
  ## 🤖 GitHub Action
@@ -115,8 +121,38 @@ steps:
115
121
  args: --profile release
116
122
  ```
117
123
 
124
+ ## ⚙️ Configuration (`pyproject.toml`)
125
+
126
+ You can customize the analyzer's behavior using a `[tool.qgis-analyzer]` section in your `pyproject.toml`.
127
+
128
+ ```toml
129
+ [tool.qgis-analyzer]
130
+ # Profiles allow different settings for CI vs Local
131
+ [tool.qgis-analyzer.profiles.default]
132
+ strict = false
133
+ generate_html = false # CLI default
134
+
135
+ [tool.qgis-analyzer.profiles.release]
136
+ strict = true
137
+ fail_on_error = true
138
+
139
+ [tool.qgis-analyzer.profiles.default.rules]
140
+ QGS101 = "error" # Ban specific module imports
141
+ QGS105 = "warning" # Warn on iface usage
142
+ QGS303 = "ignore" # Ignore resource path checks
143
+ ```
144
+
145
+ ## ⚠️ Technical Limitations
146
+
147
+ This tool performs **Static Analysis** (AST & Regex parsing). It does **not** execute your code or load QGIS libraries.
148
+ - **Dynamic Imports**: Imports inside functions or conditional blocks might be analyzed differently than top-level imports.
149
+ - **Runtime Validation**: Checks like "Missing Resources" rely on static string analysis of `.qrc` files and path strings. It cannot verify resources loaded dynamically at runtime.
150
+ - **False Positives**: While we strive for accuracy, complex meta-programming or unusual patterns might trigger false positives. Use `# noqa` or `.analyzerignore` to handle these cases.
151
+
118
152
  ## ⌨️ Full CLI Reference
119
153
 
154
+ > **Note**: The Python package is named `qgis-plugin-analyzer`, but the command-line tool is installed as `qgis-analyzer`.
155
+
120
156
  ### `qgis-analyzer analyze`
121
157
  Audits an existing QGIS plugin repository.
122
158
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "qgis-plugin-analyzer"
3
- version = "1.3.0"
3
+ version = "1.4.0"
4
4
  description = "A professional static analysis tool for QGIS (PyQGIS) plugins"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.8"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qgis-plugin-analyzer
3
- Version: 1.3.0
3
+ Version: 1.4.0
4
4
  Summary: A professional static analysis tool for QGIS (PyQGIS) plugins
5
5
  Author-email: geociencio <juanbernales@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -27,6 +27,8 @@ License-File: LICENSE
27
27
  Dynamic: license-file
28
28
 
29
29
  # QGIS Plugin Analyzer 🛡️
30
+
31
+ 👉 **[View Full Rules Catalog (RULES.md)](RULES.md)**
30
32
  ![GitHub release (latest by date)](https://img.shields.io/github/v/release/geociencio/qgis-plugin-analyzer?color=blue&logo=github)
31
33
  ![Python Version](https://img.shields.io/badge/python-3.8%2B-blue?logo=python)
32
34
  ![License](https://img.shields.io/badge/License-GPLv3-blue.svg)
@@ -86,6 +88,11 @@ If you have [uv](https://github.com/astral-sh/uv) installed, you can install the
86
88
  uv tool install git+https://github.com/geociencio/qgis-plugin-analyzer.git
87
89
  ```
88
90
 
91
+ **2. Standard pip installation (Git):**
92
+ ```bash
93
+ pip install git+https://github.com/geociencio/qgis-plugin-analyzer.git
94
+ ```
95
+
89
96
  **2. Local installation for development:**
90
97
  ```bash
91
98
  git clone https://github.com/geociencio/qgis-plugin-analyzer
@@ -122,10 +129,9 @@ You can run `qgis-plugin-analyzer` automatically before every commit to ensure q
122
129
 
123
130
  ```yaml
124
131
  - repo: https://github.com/geociencio/qgis-plugin-analyzer
125
- rev: v1.1.0 # Use the latest tag
132
+ rev: v1.4.0 # Use the latest tag
126
133
  hooks:
127
134
  - id: qgis-plugin-analyzer
128
- - id: qgis-plugin-analyzer
129
135
  ```
130
136
 
131
137
  ## 🤖 GitHub Action
@@ -143,8 +149,38 @@ steps:
143
149
  args: --profile release
144
150
  ```
145
151
 
152
+ ## ⚙️ Configuration (`pyproject.toml`)
153
+
154
+ You can customize the analyzer's behavior using a `[tool.qgis-analyzer]` section in your `pyproject.toml`.
155
+
156
+ ```toml
157
+ [tool.qgis-analyzer]
158
+ # Profiles allow different settings for CI vs Local
159
+ [tool.qgis-analyzer.profiles.default]
160
+ strict = false
161
+ generate_html = false # CLI default
162
+
163
+ [tool.qgis-analyzer.profiles.release]
164
+ strict = true
165
+ fail_on_error = true
166
+
167
+ [tool.qgis-analyzer.profiles.default.rules]
168
+ QGS101 = "error" # Ban specific module imports
169
+ QGS105 = "warning" # Warn on iface usage
170
+ QGS303 = "ignore" # Ignore resource path checks
171
+ ```
172
+
173
+ ## ⚠️ Technical Limitations
174
+
175
+ This tool performs **Static Analysis** (AST & Regex parsing). It does **not** execute your code or load QGIS libraries.
176
+ - **Dynamic Imports**: Imports inside functions or conditional blocks might be analyzed differently than top-level imports.
177
+ - **Runtime Validation**: Checks like "Missing Resources" rely on static string analysis of `.qrc` files and path strings. It cannot verify resources loaded dynamically at runtime.
178
+ - **False Positives**: While we strive for accuracy, complex meta-programming or unusual patterns might trigger false positives. Use `# noqa` or `.analyzerignore` to handle these cases.
179
+
146
180
  ## ⌨️ Full CLI Reference
147
181
 
182
+ > **Note**: The Python package is named `qgis-plugin-analyzer`, but the command-line tool is installed as `qgis-analyzer`.
183
+
148
184
  ### `qgis-analyzer analyze`
149
185
  Audits an existing QGIS plugin repository.
150
186