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.
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/PKG-INFO +39 -3
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/README.md +38 -2
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/pyproject.toml +1 -1
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/PKG-INFO +39 -3
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/LICENSE +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/setup.cfg +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/__init__.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/__init__.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/cli.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/engine.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/fixer.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/models/__init__.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/models/analysis_models.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/__init__.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/html_reporter.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/markdown_reporter.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/summary_reporter.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/rules/__init__.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/rules/modernization_rules.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/rules/qgis_rules.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/scanner.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/semantic.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/transformers.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/__init__.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/ast_utils.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/config_utils.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/logging_utils.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/path_utils.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/performance_utils.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/validators.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/SOURCES.txt +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/dependency_links.txt +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/entry_points.txt +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/top_level.txt +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_analyzer.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_fixer.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_high_complexity.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_safety.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_scanner.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_security.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_semantic.py +0 -0
- {qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/tests/test_validators.py +0 -0
- {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
|
+
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
|

|
|
31
33
|

|
|
32
34
|

|
|
@@ -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.
|
|
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
|

|
|
3
5
|

|
|
4
6
|

|
|
@@ -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.
|
|
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
|
|
{qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/qgis_plugin_analyzer.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qgis-plugin-analyzer
|
|
3
|
-
Version: 1.
|
|
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
|

|
|
31
33
|

|
|
32
34
|

|
|
@@ -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.
|
|
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
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/models/analysis_models.py
RENAMED
|
File without changes
|
{qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/__init__.py
RENAMED
|
File without changes
|
{qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/html_reporter.py
RENAMED
|
File without changes
|
|
File without changes
|
{qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/reporters/summary_reporter.py
RENAMED
|
File without changes
|
|
File without changes
|
{qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/rules/modernization_rules.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/config_utils.py
RENAMED
|
File without changes
|
{qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/logging_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{qgis_plugin_analyzer-1.3.0 → qgis_plugin_analyzer-1.4.0}/src/analyzer/utils/performance_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|