AQuAMan

Overview

As a Peer Reviewer, I want to have a fast and predictable method of checking the quality of application patches so that I do not have to exert a lot of time and energy manually checking these against the application standards.

As a Lead Developer, I want to define and manage the quality standards that comprise the 'Definition of Good' for my application so that they can be applied and reported on in a peer review against an application patch.

Key Features & Functionality

  • Automate 80% of the Peer Review checklist items
  • Register Appian applications and define common standards across that application
  • Run a suite of tests across an Application patch
  • Report on failed tests
  • Copy tests between applications
  • Define new object/attribute tests (including database table and view objects) and apply within an application
  • Set the reported significance for a failed test (Fail/Warning/Information)
  • Report on unused variables in Expression Rules and Interfaces
  • Report on the complexity score for Expression Rules and Interfaces
Anonymous
Parents
  • Hi @,

    Aquaman is not working with latest Appian version 24.2 as we are getting error:

    An error occurred while evaluating expression: patchMetaData:rule!AQA_ER_getPatchMetadata(patchContent: pv!patchContent) (Expression evaluation error in rule 'aqa_er_getpatchmetadata' at function 'type!{urn:com:appian:types:AQA}AQA_PATCH_METADATA' [line 26]: Invalid index (2) for list: valid range is 1..1) (Data Outputs)

    it is due to change in the order of manifest file in new version:

    the new version of manifest file:

    Manifest-Version: 1.0
    Appian-Version: 24.2.295.0
    Created-On: 2024-07-04T12:09:28.760Z

    older version:

    Manifest-Version: 1.0
    Created-On: 2021-08-19T07:11:28.264Z
    Appian-Version: 21.2.335.0

    I have changed the index in AQA_ER_getPatchMetadata from 3 to 2 but Aquaman result showing no analysis.

    Can you please check that.

  • Per my observation, there are two issues

    • inproper check for existence of the manifest file in patch
    • inproper local variable initialization in case the manifest is not found

    1. Appian function `document()` returns the filename without extension for `name` attribute - check on line 7 (AQA_ER_getPatchMetadata)

    document(fv!item,"name")=cons!AQA_TEXT_MANIFEST_NAME

    will never match the manifest file from the patch because

    2. the constant AQA_TEXT_MANIFEST_NAME has by default the full filename as value (MANIFEST.MF).
    Hence, the local variable `local!manifest` will remain empty. This leads to

    3. local variable `local!manifestContent` will initialize as list of strings (because the manifest file seems not present in the patch), not as a single string (as it is done by the readtextfromfile() function)

    4. function `fn!keyval()` expects a single string, not a list of strings. In this case, it receives a list of strings and will never return the expected value (Created-On), but null instead

    This causes the error described above.

      Would you please consider looking at this and fixing it in the source code?

Comment
  • Per my observation, there are two issues

    • inproper check for existence of the manifest file in patch
    • inproper local variable initialization in case the manifest is not found

    1. Appian function `document()` returns the filename without extension for `name` attribute - check on line 7 (AQA_ER_getPatchMetadata)

    document(fv!item,"name")=cons!AQA_TEXT_MANIFEST_NAME

    will never match the manifest file from the patch because

    2. the constant AQA_TEXT_MANIFEST_NAME has by default the full filename as value (MANIFEST.MF).
    Hence, the local variable `local!manifest` will remain empty. This leads to

    3. local variable `local!manifestContent` will initialize as list of strings (because the manifest file seems not present in the patch), not as a single string (as it is done by the readtextfromfile() function)

    4. function `fn!keyval()` expects a single string, not a list of strings. In this case, it receives a list of strings and will never return the expected value (Created-On), but null instead

    This causes the error described above.

      Would you please consider looking at this and fixing it in the source code?

Children
No Data