MetOffice / MetOffice/SimSys_Scripts
Lowercase and CamelCase checking of module imports in UMDP3 checker
@Pierre-siddall đang làm issue này rồi.
Từ ngày 28/4/2026.
- Ngôn ngữ chính
- Python
- Star
- 9
- Fork
- 19
- Merge trung bình
- 5 ngày 48 phút
- Pull request đã merge (30 ngày)
- 4
Mô tả
During the runtime of `umdp3_conformance.py` it was noted that changing module imports to be uppercase did not result in a failure being registered in the output of the script as expected. `umdp3_conformance.py` calls the following code in `umdp3_checker_rules.py`
```python
def lowercase_variable_names(self, lines: List[str]) -> TestResult:
"""Check for lowercase or CamelCase variable names only"""
"""
TODO: This is a very simplistic check and will not detect many
cases which break UMDP3. I suspect the Perl Predecessor concatenated
continuation lines prior to 'cleaning' and checking. Having identified
a declaration, it also then scanned the rest of the file for that
variable name in any case."""
failures = 0
error_log = {}
count = -1
for count, line in enumerate(lines):
clean_line = self.remove_quoted(line)
clean_line = re.sub(r"!.*$", "", clean_line)
# Simple check for UPPERCASE variable declarations
if re.search(
r"^\s*(INTEGER|REAL|LOGICAL|CHARACTER|TYPE)\s*.*::\s*[A-Z_]+",
clean_line,
re.IGNORECASE,
):
clean_line = re.sub(
r"^\s*(INTEGER|REAL|LOGICAL|CHARACTER|TYPE)\s*.*::\s*",
"",
clean_line,
)
if match := re.search(r"([A-Z]{2,})", clean_line):
self.add_extra_error(f"UPPERCASE variable name : {match[1]}")
failures += 1
error_log = self.add_error_log(
error_log, f"UPPERCASE variable name {match[1]}", count +1
)
output = f"Checked {count + 1} lines, found {failures} failures."
return TestResult(
checker_name="Lowercase or CamelCase variable names only",
failure_count=failures,
passed=(failures == 0),
output=output,
errors=error_log,
)
```
addressing this issue will involve a refactor of this function to ensure module level imports are checked.
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Đánh giá
Issue này chưa được đánh giá.