Giter VIP home page Giter VIP logo

dlt-message-analyzer's People

Contributors

sevketcaba avatar svlad-90 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

dlt-message-analyzer's Issues

[IN_RAM_CACHE] Add check of the user's cache-size value

  • Add check, that will NOT allow the user to specify the cache size more, than the actual available amount of RAM on his system.
  • Add the implicit check of the cache size setting which will do the same. It should be done in order to cover the relocation of the plugin's settings from one machine to the other.

[SEARCH] Integrate regex name scripting with plantuml.jar

As a user, I want to be able to automatically build sequence diagrams out of the output of the different applications within the system. I want to be able to normalize data from different applications and put them all into a single unified sequence diagram.


In order to do that we can use plantuml.jar out of here: https://github.com/plantuml/plantuml


The integration point should be an extension of regex name scripting.

User should specify the following groups within the message:

<USID> - optional UML_SEQUENCE_ID
<UCL> - mandatory UML_CLIENT
<URT>|<URS>|<UE> - mandatory one of UML_REQUEST|UML_RESPONSE|UML_EVENT
<US> - mandatory UML_SERVICE
<UM> - mandatory UML_METHOD
<UA> - optional UML_ARGUMENTS

In case if all mandatory groups would be found, the found row would be used to form the single step of the sequence.

Result plantuml formatting would look like this:
<UCL> <URT|URS|UE> <US> : [timestamp] <USID><UM>(<UA>)

  • A separate view should be created to visualize the sequence - Done.
  • A system call to plantuml.jar should be used to form the svg image - Done.
  • QGraphicsSvgItem should be used to visualize the diagram - Done.
  • It should be possible to export the diagram to the file system as *.png, *.svg & *.puml - Done.
  • The generation of the sequence diagram is an expensive operation. It should be done ONLY by an explicit trigger from the user - Done.
  • The generation of the sequence diagram is an expensive operation. There should be some setting, which will specify the maximum number of considered rows in order to avoid "forever stuck" in waiting for the operation to finish - Done.
  • The generation of the sequence diagram is an expensive operation. It should be started in a separate worker thread - Not needed.
  • It should be possible to instantly cancel the generation of the sequence diagram. Cancelation can be triggered from UI by the user - Done.
  • The search view should highlight rows, which will be used for the creation of the sequence diagram - Done.
  • The feature will require additional CPU to gather the required data. The search might become slower due to that. There should be a setting to turn on and off the plantuml feature - Done.
  • The user should have the possibility to specify, whether arguments should be represented, whether they should be represented with wrapping. - Done.
  • Users should be able to turn off and on the consideration of the specific suitable row within the "Search view" for the creation of the sequence diagram. Search view rows should have 3 states from this perspective: suitable_selected, suitable_not_selected, not_suitable - Done.
  • It should be possible to clear the diagram from the context menu of the preview tab - Done.
  • Delivery of plantuml.jar should be integrated into the plugin - Done.

[UML_VIEW] Make path to plantuml.jar configurable

It is not correct to search for plantuml.jar using the "./plugins/plantuml.jar" path.
When dlt-viewer is installed on the Linux via qmake:

  • the executable "dlt-viewer" is placed under the "/usr/bin" path
  • the *.so-s of plugins are placed under the "/usr/share/dlt-viewer/plugins/" path
  • but plantuml.jar is NOT installed anywhere, while plugin tries to find its location under "./plugins/plantuml.jar", which does not work

The approach should be extended to:

  • Try to find the plantuml.jar by its default path. The default path should be somewhere under the same folder, where the settings of the dlt-message-analyzer plugin are located.
  • Check the availability of installed plantuml.jar by environment variables. It should be checked whether such an approach is applicable.
  • Add the new setting in order to allow the user to specify a custom path to the plantuml.jar
  • Add setting which will tell whether the default path, environment variable path, or custom path should have the highest priority

Together with that, it would be great to have similar functionality in order to check the availability of java on the target machine.

Also CMake and make builds should be extended to install plantuml.jar to the user folder.

[FILTERS_VIEW] Add suggestions to the filters view

Once the search is performed with a specific regex, it should be possible to form the list of suggestions for each specified variable.
Once the user is trying to edit a variable's text, suggestions should be proposed to him in the form of the combo-box. A list of suggestions should be formed based on the found content within the specific group. That will allow us to play around with filters in a much more comfortable way.

[SETTINGS_MANAGER] Change location of settings from single hard-coded value to OS-specific paths

On Linux, there is an issue - when built dlt-viewer is installed, the plugin can't write to settings files, as they are located nearby the plugin, in the read-only area of the file-system.

This should be changed. Settings should be located in the user folder which is open for read-write operations.

That will allow to:

  • avoid the issue with read-only fs area
  • have user-specific settings instead of the global ones

P.S. There should also appear a new context menu "Open settings location". That will make life easier for the user if he wants to get an understanding of where the settings are located.

[REPOSITORY] Create static code analysis build session

In order to ensure the appropriate quality of our SW, it would be great to create a static-code analysis build session.
The session should be running on ubuntu-latest and use cpp-check tool.
After ( and if ) the session will be established, we will create another task to fix all identified warnings.

[SEARCH_VIEW] Addition of the python-based comparator function

Support the possibility to save a python-based trace-analysis class, as a pattern to the patterns view.
Pythion scripts should have access to the logging API of the debug console to fire the messages into it.
Pythion scripts should have access to the search view to add new messages to it.
Pythion scripts should have their own status variables, which stay alive during a single search session.

That will allow implementing the advanced automated trace analysis, which will make conclusions regarding multiple messages and their sequence.

[FILTERS_VIEW] Filter view breaks the regex after changing the variable's value

Observed behavior:

The filter view breaks the regex after changing the variable's value.
That happens only after changing the filter view's sorting.
It seems that regex is reconstructed in the wrong order.

Expected behavior:

The regex reconstruction algorithm should not rely on the order of the elements within the view.

[SEARCH] String creator widget

Add the possibility to dynamically select, which parts of information to combine into a single string, before sending it to the regex engine. Currently those parts are "APP ID" + " " + "Context ID" + " " + "payload" without the possibility to adjust something. It might be useful to add the possibility of a dynamic selection of columns to be used, e.g. Ecuid, Timestamp, etc. Also, it would be cool to allow us to change the order of the used parts.

In addition to that, the "patterns view" and "regex input" should be extended in order to allow to specify parts of regex, which should be used for each separate column. Some "simplified" & "advanced" view variants. It will allow us to consistently support this feature.

[UML_VIEW] Add possibility to specify values for absent parts of UML sequence

It might happen, that formatting of existing messages in the project does not fit constraint to have all mandatory UML groups. Thus the creation of a sequence diagram is not possible. Still, the client might understand that specific formatting of the message is representing communication with a specific interface and method, and wants to provide this information as part of the regex. We should allow the client to do this.


Let's consider the following example:

2206 2020/08/06 15:27:04.204000 276163.1118 ECU1 SYS JOUR 2020/08/06 15:27:03.556033 cat[49294]: Informational: CAlice: sentName(name: "Alice")
2207 2020/08/06 15:27:04.703000 276163.5468 ECU1 SYS JOUR 2020/08/06 15:27:03.991085 cat[49299]: Informational: CAlice: response(success: 1)

What would I expect to do with the above messages?

  • Specify Alex as a CLIENT, despite that string has CAlice
  • Specify Bob as a SERVICE, despite it is not presented in the message
  • Specify sayMyName as a method, despite it is not presented in the message
  • Specify request, response, event, despite they are not presented in the message directly

I want to use the following regex in order to achieve the above mentioned points:
^(SYS).?: Informational: (?<UCL_Alex>CAlice):.?(?<US_Bob>(?<UM_sayMyName>(?sentName)|(?response))).*((?[\w]+))

New parts of behavior:

  • UCL_Alex will replace CAlice to Alex in the diagram content ( not supported yet )
  • US_Bob will add Bob service, despite, that it is not presented in the message ( not supported yet )
  • UM_sayMyName will add sayMyName method, despite that it is not presented in the message ( not supported yet )
  • URT & URP are stick to the parts of the message, which only indirectly show whether it is request or response ( supported already )

If supported, above will allow creating sequence diagrams even from non-perfectly formatted messages,
expanding the number of covered use-cases.

P.S. Together with that, it would be good to remove the 32 characters limitation on size of the regex group names. It should be possible to do that via internal mapping of provided group names to some shorter identifiers, e.g. counter-based ones - 1, 2, 3, 4, etc. Short identifiers would be actually used within the regex, while long names would be still known to the plugin's implementation.

[SETTINGS_MANAGER] Add versioning to each user setting

Add versioning to each user setting in order to allow us to reset specific settings once it is changed in a non-compatible way.
In case if the version in the file differs from the one specified in the SW - the setting in the file should be discarded and replaced with the default value.

[SEARCH] Remove the 32 characters' limitation on size of the regex group names

It would be good to remove the 32 characters' limitations on size of the regex group names. It should be possible to do that via internal mapping of provided group names to some shorter identifiers, e.g. counter-based ones - 1, 2, 3, 4, etc. Short identifiers would be actually used within the regex, while long names would be still known to the plugin's implementation.

[VERSION_UPDATE] Version update

Currently, we support multiple platforms only on a source-code level.
Thus we doubt, that it is possible to implement the update of precompiled dll-s ( or so-s ) from the cloud.

We will start from less ambitious goals:

  • Add notification about the availability of a newer version of the plugin in Git hub
  • Add the "check for updates" option

[CLANG-TIDY] Introduce approach to suppress warnings in the third-party headers

Currently, we have several warnings in clang-tidy build, which are related to the third-party headers:

  • antlr
  • Qt

Due to the absence of an approach, we've suppressed check of the whole cpp-s, which are using the headers with warnings:

  • set(RESTORE_CLANG_TIDY OFF)
    set(CLANG_TIDY_CACHED_VAL "")
    if( DMA_CLANG_TIDY_BUILD )
    set(RESTORE_CLANG_TIDY ON)
    set(CLANG_TIDY_CACHED_VAL CMAKE_CXX_CLANG_TIDY)
    set(CMAKE_CXX_CLANG_TIDY "")
    endif()
    add_library(DMA_PCRE STATIC
    PCREHelper.cpp)
    if( RESTORE_CLANG_TIDY )
    set(CMAKE_CXX_CLANG_TIDY CLANG_TIDY_CACHED_VAL)
    set(CLANG_TIDY_CACHED_VAL "")
    set(RESTORE_CLANG_TIDY OFF)
    endif()
  • set(RESTORE_CLANG_TIDY OFF)
    set(CLANG_TIDY_CACHED_VAL "")
    if( DMA_CLANG_TIDY_BUILD )
    set(RESTORE_CLANG_TIDY ON)
    set(CLANG_TIDY_CACHED_VAL CMAKE_CXX_CLANG_TIDY)
    set(CMAKE_CXX_CLANG_TIDY "")
    endif()
    add_library(DMA_filtersView_no_clang_tidy STATIC
    CFilterItemDelegate.cpp)
    if( RESTORE_CLANG_TIDY )
    set(CMAKE_CXX_CLANG_TIDY CLANG_TIDY_CACHED_VAL)
    set(CLANG_TIDY_CACHED_VAL "")
    set(RESTORE_CLANG_TIDY OFF)
    endif()

That is wrong. We should rather exclude failing headers than exclude our own cpp files.

This task is created to:

  • Create a rule, which will allow excluding specific cpp from clang-tidy's analysis without copy-pasting a big bunch of CMake directives
  • Investigate approach regarding how to move QT's headers to the system headers section
  • Investigate approach regarding how to suppress warnings in all third-party headers or at least in specific headers, which have warnings identified

[SEARCH] Nested search

Create the possibility to post-filter already found messages in the "Search view" from an additional text input field. Create the possibility to do a post-filtering inside the post-filtered results.

[PATTERNS_VIEW] Add the possibility to update the patterns JSON from the cloud

Add the possibility to update the pattern's JSON from the cloud.

The task consists of the following changes:

  • Add the possibility to store user authentication data, which consists of the user name and password. It should be possible to store multiple authentication data-sets.
  • Add the possibility to add new pattern files from UI. During the addition of the new file, the user should specify the file name and whether the file is synced from the network. If the file is synced from the network, the user should specify the file's URL and the authentication profile.
  • Add the possibility to edit file's settings from UI. The same menu, as with the addition of a new file.
  • Add the possibility to copy files. The same menu, as with the addition of a new file, but the new file will use the content of
    the original file.
  • Add the possibility to delete files from UI.
  • JSON file with patterns should start to have a revision, which can be assigned by the user.

[SEARCH] Add the history of used regexp-s

  • Add the history of used regexp-s within one LC of application
  • Add option, which will make a regex history survive multiple LC-s
  • Add the possibility to explicitly clear the regex history
  • Add possibility to use regex to search through the history

[REPOSITORY] Prepare actions for repository

It would be great to have an automated build running for:

  • each PR created to master
  • each push to master

We need to build against dlt-viewer v 2.20.
Build should run on Linux & Windows.

[SETTINGS_MANAGER] Add possibility to check arithmetic types settings against set of allowed range of values

Related to the issue - #16
In order to have a check of RAM cache size on each start-up, we need to do a modification of the settings manager. For arithmetic types, it should take a range of allowed values as an additional input parameter and check persisted value against the range.

  • If the persisted value is less than the minimum value from the range - persisted value should be implicitly exchanged to the minimum allowed one.
  • If the persisted value is more than the maximum value from the range - persisted value should be implicitly exchanged to the maximum allowed one.

[FILTERS_VIEW] Bugs in PCRE interpretation of the filter's view

Filter's view considers the negative, positive look-behind and look-ahead as groups.
image

That is wrong. The expected behavior is:

  • Either interpret groups as groups and all other PCRE elements as text:
    image
    OR
  • Fully support the whole structuring of PCRE
    image

The first approach seems to be more feasible ( as it is more simple ). But, anyway, we first should be able to properly parse the regex. ANTLR can help with that. We can use ANTLR together with the following description of RPCE to generate a parser:
https://github.com/bkiers/pcre-parser

The parser can be used to simplify the hand-written part of the source code.
This change should be applied, as its absence locks the following task - #82

[REPOSITORY] Prepare release with automatically deliverable artifacts

In order to increase the level of the support of our users, we need to start to prepare releases with automatically deliverable artifacts.

Currently, we need the following builds to be supported:

  • Windows build for msvc-2013 & Qt 5.5.1 for version 2.19 of the dlt-viewer ( to support one of the actual projects )
  • Windows build for msvc-2013 & Qt 5.5.1 for version 2.20 of the dlt-viewer ( to support one of the actual projects )
  • Windows build for msvc-2019 & Qt 5.15.0 for version 2.19 of the dlt-viewer
  • Windows build for msvc-2019 & Qt 5.15.0 for version 2.20 of the dlt-viewer
  • Linux build

For Windows, the artifact should be an archive with dlt-viewer + DLT-Message-Analyzer plugin inside.
For Linux, the artifact should be an archive with dlt-viewer's + DLT-Message-Analyzer's source code inside, ready for being compiled with CMake.

For Linux, build is not actually needed, as only the source code is part of the delivery. Still, the corresponding build should compile the code, in order to prevent the delivery of non-compilable source code.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.