.
| Key | Issue Type | Summary | Resolution | Note |
|---|---|---|---|---|
| SAN-1687 | Bug | SAN summary message is only reported on second code generation |
Duplicate | [[GENERAL]] Static Analysis will no longer prevent a download if analysis messages are reported, therefore no summary message will be produced anymore. Duplicate of SAN-1206 |
| SAN-1686 | Bug | SAN 5.1.0.0, Bug, Minor: Build success or fail depends on the rules of the reported SAN errors |
Duplicate | [[GENERAL]] Static Analysis will no longer prevent a download if analysis messages are reported, therefore no summary message will be produced anymore. Duplicate of SAN-1206 |
| SAN-1679 | Bug | SA0055: Internal error |
Fixed | |
| SAN-1678 | Bug | SA0031: False positive for FB method called via interface |
Duplicate | [[GENERAL]] Duplicates SAN-1668 |
| SAN-1670 | Improvement | SA0178: Add option to "Ignore error/warning globally for POU" |
Fixed | |
| SAN-1668 | Bug | SAN: SA0031 "Unused Method" should not be reported for interface methods |
Fixed | |
| SAN-1664 | Bug | Operator __NEW() causes false positive compile error C0265 while running SAN in a library |
Fixed | |
| SAN-1661 | Bug | Static Analysis creates no analysis tag by "possible divison by zero" |
Fixed | |
| SAN-1659 | Bug | FalsePositive: SA0014 Assigment of instances is reported for VAR_IN_OUT assignments |
Fixed | |
| SAN-1656 | Bug | SA0040: False positives for expressions with MODULO where the divisor is not zero |
Won't Fix | [[GENERAL]] The static analysis will only perform local checks, that means it cannot know if there are any accesses to the variables in other methods or from other parts of the program. It cannot proof that the value will still have the initialisation value when the marked line is executed. |
| SAN-1655 | Bug | SFC SA0162, SA0168: False positives for missing comments and unused values |
Fixed | |
| SAN-1654 | Bug | SA0040: False positive about denominator with granted value of 1 |
Won't Fix | [[GENERAL]] The static analysis will only perform local checks, that means it cannot know what values the instance variables of the function block have, when it is invoked. If another method sets the value to -1, the program could still crash. |
| SAN-1651 | Bug | The information Aborted check .... because code is to complex is reported after each change |
Fixed | |
| SAN-1649 | Bug | SAN: Dialog to configure limits/parameters cannot be confirmed with Enter key |
Fixed | |
| SAN-1647 | Improvement | Refactoring: Fix all critical code smells |
Fixed | |
| SAN-1645 | Improvement | SAN: Settings/Rules search should allow querying with "SA" Prefix |
Fixed | [[GENERAL]] No additional filtering mechanismn was implemented. The display of the rules in the configuration editor was changed instead: The rule prefix (e.g. SA0123) is displayed similar to the display of the compiler warnings in the project settings dialog. |
| SAN-1643 | Improvement | Ignore SA009 for FB_Init |
Fixed | |
| SAN-1642 | Bug | SA0040: Possible division by zero, not recognizing simple logic nor tolerance |
Fixed | [[GENERAL]] Static Analysis will no longer report a warning for a potential division by zero when the divisor is guarded by an ABS > epsilon check, for example: IF ABS(divisor) > LREAL#1E-9 THEN test := test/divisor END_IF [[KNOWN_LIMITATIONS]] The project attached to this issue contains multiple cases of false positives for error SA0040. Under this issue ID, only the case described below was fixed. For the remaining fixes, see the linked issue (SAN-1685). |
| SAN-1640 | Improvement | Generate all variables in a program as temp variables instead of static ones |
Fixed | |
| SAN-1639 | Bug | SA0061: False positive in case of call of __DELETE operator |
Fixed | |
| SAN-1638 | Bug | False Positives SA35/SA36 when executed from command line with --noUI |
Fixed | |
| SAN-1637 | Bug | SAN: False positives reported for FOR/REPEAT loops |
Cannot Reproduce | [[GENERAL]] Static Analysis 5.2.0.0 no longer generates message SA0180 for the reported cases where it was previously unjustified. [[KNOWN_LIMITATIONS]] Certain POU constructs like multiple nested loops may result in a "Code of POU is too complex" warning, meaning that certain checks cannot be performed. |
| SAN-1636 | Bug | SA0062: False positive for special WHILE usage within FOR loop |
Fixed | |
| SAN-1635 | Bug | SAN: False positives when assigning function return values within CASE statement |
Fixed | |
| SAN-1634 | Bug | SAN: False positives reported for enum members which are respected in CASE statement within value area |
Fixed | |
| SAN-1633 | Bug | SA0019: False Positive Implicit conversion from 'POINTER TO VisuStructClientData' to 'POINTER TO VisuStructClientData' |
Fixed | [[GENERAL]] In the reported project there actually is no false positive, because the input pointer refers to a VisuStructClientData defined in a different Library than the parameter. But even if the correct declaration is used, the compiler will also report an error. The static analysis uses information produced by the essentials Compiler. This information is wrong in this case. In some cases a type used in a library refers to the wrong signature. We can't fix the problem in the static analysis, but we introduced a plausibility check. If a type refers to a declaration with a different name than the type, we ignore the declaration and don't produce any error. |
| SAN-1631 | Bug | SA0062 False Positive if the compare value has only access by pointer |
Fixed | [[GENERAL]] The check will not report a SA0062 message if the condition contains a local variable of the currently checked POU and anyone within the currently checked POU uses the address of this variable. |
| SAN-1629 | Bug | SA0095AssignmentInConditions shows false positive for Array of Structure Initialization |
Fixed | |
| SAN-1627 | Bug | SAN: False positive for different struct instances whose output variable is only written once |
Fixed | [[GENERAL]] Detection for SA0004: "Multiple write on output" has been fully reworked. It now resolves incomplete addresses (e.g., %QB*) to their concrete locations using instance paths from VAR_CONFIG. As before, multiple writes inside IF or CASE statements are allowed when they occur in different branches. Nesting depth is ignored because internal optimizations (such as converting ELSEIF chains into nested IF statements) can change the structure without user involvement. |
| SAN-1626 | Bug | SAN: Different report results for VAR and VAR_TEMP variables |
Duplicate | [[GENERAL]] Duplicates SAN-1640. The data flow analysis now executes Programs and Function blocks implicitly in an endless loop. Temporary variables are initialized in each loop cycle. Local Variables are initialized once outside the loop. In all other respect, VAR_TEMP and VAR (also VAR_OUTPUT) are treated in the same way. This way, the same messages should be produced, as long as the local variables are not written. |
| SAN-1625 | Bug | SAN: Generates some false-positive results |
Fixed | |
| SAN-1623 | Bug | SA0145: Rule should not be reported for reference access within SEL operator if having checked the reference with __ISVALIDREF |
Fixed | |
| SAN-1561 | Bug | Static analysis checks not executed automatically anymore after check all pool objects |
Duplicate | [[GENERAL]] Duplicate of SAN-1560 SAN |
| SAN-1560 | Bug | SAN: In library projects, static analysis is no longer performed automatically when "Check all pool objects" is selected |
Fixed | [[KNOWN_LIMITATIONS]] In contrast to the command "Run Static Analysis" those rules, that evaluate generated code (e.g. rule SA0100 "Variables greater than XX bytes"), are not reported if Static Analysis is run automatically after "Check all Pool Objects" |
| SAN-1238 | Bug | Metric: direct address accesses in the declaration part are not counted |
Duplicate | [[GENERAL]] Duplicate of SAN-1237 |
| SAN-1237 | Bug | Metric: Globals used in the declaration of a POU are not counted |
Fixed | |
| SAN-1206 | Bug | Violations of precompile rules don't prevent from going online if rules are checked automatically when generating code |
Fixed | [[GENERAL]] In Static Analysis Professional it is now possible to login in even in case of Static Analysis errors (if Static Analysis is run automatically after "Generate Code") For Static Analysis Light (the unlicensed variant of Static Analysis) the behaviour remains unchanged. |
| SAN-1122 | Improvement | SA0032: Implement Quickfix, Remove unused enumeration constant |
Fixed | |
| SAN-1085 | Improvement | SA0164, Multiline comments: Implement Quickfix to convert into single line comments |
Fixed | |
| SAN-1084 | Improvement | SA0163, Nested comments: Implement Quickfix to remove nesting |
Fixed | |
| SAN-1077 | Improvement | SA0078, Missing CASE branches: Implement Quickfix to remove unused parts of CASE statement |
Fixed | [[GENERAL]] This Quickfix can only be used with essentials versions 3.5.22.0 and later. |
| SAN-786 | Bug | Static Analysis: Create a new dummy device description for SAN checks |
Cannot Reproduce | [[GENERAL]] Starting with CODESYS V3.5 SP18 or Static Analysis V5 this problem is no longer reproducible |
| SAN-762 | Improvement | SAN should not check implemented method members |
Fixed | |
| SAN-620 | Bug | Metrics: LCOM metric does not consider properties/transitions |
Fixed | |
| SAN-600 | Bug | Static Analysis Full\View standard metrics: Objects defined with attribute 'global_init_slot' are not contained in metrics table |
Fixed |