Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add debug log with information which filter rejected some element #147

Open
bkryza opened this issue May 25, 2023 · 7 comments
Open

Add debug log with information which filter rejected some element #147

bkryza opened this issue May 25, 2023 · 7 comments
Labels
enhancement New feature or request

Comments

@bkryza
Copy link
Owner

bkryza commented May 25, 2023

Currently it is very difficult to figure out why specific element e.g. a class, was not included in the diagram. Usually this is caused by improper filters definition.

There should be a log entry in the verbose log with information on which filter rejected any of the elements (this could be a lot - but it will be limited to translation units specified by glob pattern and system headers are skipped by default anyway...)

@bkryza bkryza added the enhancement New feature or request label May 25, 2023
@rob-weiss
Copy link

Is there any workaround until this is implemented? When I run

clang-uml --progress -vvv --remove-compile-flag -Wno-error=class-memaccess --remove-compile-flag -rdynamic --print-from -n example_class_diagram | grep RsbLoc::StationaryLocations::StationaryLocations

I get

Dc::Per::RsbLoc::StationaryLocations::StationaryLocations(const ObstacleSensorRoad::sensor_type &,const ::Per::Frames::Rot1dAcc2dFor &,const TrackedPolylines &)

When I copy the output to my generated .uml-clang file, it generates an almost empty .puml file.

@startuml

'Generated with clang-uml, version 0.4.0
'LLVM version Ubuntu clang version 12.0.0-3ubuntu1~20.04.5
@enduml

It works fine for type: class. Here's my config:

# Change to directory where compile_commands.json is
compilation_database_dir: /workspaces/repos/pj-dc_int/build/unittests/compile_commands.json
# Change to directory where diagram should be written
output_directory: diagrams
diagrams:
  example_class_diagram:
    type: sequence
    glob:
      - src/*.cpp
    using_namespace:
      - Dc::Per::RsbLoc
    include:
      namespaces:
        - Dc::Per::RsbLoc
    exclude:
      namespaces:
        - myproject::detail
    from:
      - function: "Dc::Per::RsbLoc::StationaryLocations::StationaryLocations(const ObstacleSensorRoad::sensor_type &,const ::Per::Frames::Rot1dAcc2dFor &,const TrackedPolylines &)"
clang-uml --version                                                                                                                         ─╯
clang-uml 0.4.0
Copyright (C) 2021-2023 Bartek Kryza <bkryza@gmail.com>
Linux x86_64 3.10.0-1160.95.1.el7.x86_64
Built against LLVM/Clang libraries version: 12.0.0
Using LLVM/Clang libraries version: Ubuntu clang version 12.0.0-3ubuntu1~20.04.5

@bkryza
Copy link
Owner Author

bkryza commented Sep 28, 2023

@rob-weiss Can you generate the diagram with full verbosity and without -p and check if you get an error saying that the specified entrypoint method signature was not found?

@rob-weiss
Copy link

Thanks for your swift reply, @bkryza! I was wondering why -vvv didn't seem to have any effect and wasn't aware that -p prevents the output.

clang-uml -vvv --remove-compile-flag -Wno-error=class-memaccess --remove-compile-flag -rdynamic 

doesn't seem to throw any apparent errors like the one mentioned above, but it seems to be missing sequences. I could share the full log, but it's massive.

...
[trace] [tid 73608] [diagram.cc:447]        Message from=Dc::Per::RsbLoc::StationaryLocations::getValidTrackedLocations(const TrackedPolylines &) const, from_id=2117836952607764917, to=Dc::Per::RsbLoc::Vertex::getX() const, to_id=263640730606845517, name=getX, type=call
[trace] [tid 73608] [diagram.cc:447]        Message from=Dc::Per::RsbLoc::StationaryLocations::getValidTrackedLocations(const TrackedPolylines &) const, from_id=2117836952607764917, to=Dc::Per::RsbLoc::Vertex::getY() const, to_id=1115386493799863632, name=getY, type=call
[trace] [tid 73608] [diagram.cc:447]        Message from=Dc::Per::RsbLoc::StationaryLocations::getValidTrackedLocations(const TrackedPolylines &) const, from_id=2117836952607764917, to=Dc::Per::RsbLoc::EllipticalRatioInterpolator::calcEllipticalRatioForRegionQuery(const vfc::float32_t), to_id=984077938161644863, name=Dc::Per::RsbLoc::EllipticalRatioInterpolator::calcEllipticalRatioForRegionQuery, type=call
[trace] [tid 73608] [diagram.cc:447]        Message from=Dc::Per::RsbLoc::StationaryLocations::getValidTrackedLocations(const TrackedPolylines &) const, from_id=2117836952607764917, to=Dc::Per::RsbLoc::Location::Location(const vfc::float32_t,const vfc::CRadian,const vfc::float32_t,const vfc::float32_t,const vfc::float32_t,const vfc::int32_t,const vfc::float32_t), to_id=395498143371739108, name=Dc::Per::RsbLoc::Location::Location, type=call
[trace] [tid 73608] [diagram.cc:438]        Message from=Dc::Per::RsbLoc::StationaryLocations::getValidTrackedLocations(const TrackedPolylines &) const, from_id=2117836952607764917, to=__UNRESOLVABLE_ID__, to_id=0, name=, type=end for
[trace] [tid 73608] [diagram.cc:438]        Message from=Dc::Per::RsbLoc::StationaryLocations::getValidTrackedLocations(const TrackedPolylines &) const, from_id=2117836952607764917, to=__UNRESOLVABLE_ID__, to_id=0, name=, type=end for
[trace] [tid 73608] [diagram.cc:424] Sequence id=2221320942975980108:
[trace] [tid 73608] [diagram.cc:428]    Activity id=2221320942975980108, from=Dc::Per::RsbLoc::findBestMergeCandidate<40,200>(const vfc::int32_t,const Dc::Per::RsbLocTypes::Polylines<40,200> &):
[trace] [tid 73608] [diagram.cc:447]        Message from=Dc::Per::RsbLoc::findBestMergeCandidate<40,200>(const vfc::int32_t,const Dc::Per::RsbLocTypes::Polylines<40,200> &), from_id=2221320942975980108, to=Dc::Per::RsbLoc::findAllMergeCandidates<40,200>(const vfc::int32_t,const Dc::Per::RsbLocTypes::Polylines<40,200> &,vfc::TFixedVector<vfc::int32_t,Params::maxNumberOfMergeCandidates> &,vfc::TFixedVector<vfc::float32_t,Params::maxNumberOfMergeCandidates> &), to_id=629456817618112261, name=Dc::Per::RsbLoc::findAllMergeCandidates, type=call
[debug] [tid 73608] [sequence_diagram_generator.cc:498] Found sequence diagram start point: 848280990975368959
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [848280990975368959] --> [635751086666514868]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getValidCurrentLocations(const ObstacleSensorRoad::sensor_type &,const ::Per::Frames::Rot1dAcc2dFor &) const' from true [848280990975368959] to true [635751086666514868]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 848280990975368959 --> 635751086666514868 - missing sequence 635751086666514868
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [635751086666514868] --> [941675519119347269]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call '__isValidLocation(const ObstacleSensorRoad::sensor_type &,const ::Per::Frames::Rot1dAcc2dFor &)__' from true [635751086666514868] to true [941675519119347269]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 635751086666514868 --> 941675519119347269 - missing sequence 941675519119347269
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [941675519119347269] --> [10223226466453449]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call '__invalidateMovingLocations(const ObstacleSensorRoad::sensor_type &,const ::Per::Frames::Rot1dAcc2dFor &)__' from true [941675519119347269] to true [10223226466453449]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 941675519119347269 --> 10223226466453449 - missing sequence 10223226466453449
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [941675519119347269] --> [1364985846403034051]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call '__markValidElevationPeer(const ::Per::InputCollection< ::Per::InterfaceRadar::RadarBoschGen5Feature,Dc::Per::Param::PerCompiletimeParamConfig::get_g_sizeMeasRF()> &,const vfc::uint32_t,LocationMaskType &)__' from true [941675519119347269] to true [1364985846403034051]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 941675519119347269 --> 1364985846403034051 - missing sequence 1364985846403034051
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [635751086666514868] --> [1898973953744879010]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call '__calcEllipticalRatioForRegionQuery(const vfc::float32_t,const vfc::float32_t)__' from true [635751086666514868] to true [1898973953744879010]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 635751086666514868 --> 1898973953744879010 - missing sequence 1898973953744879010
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [1898973953744879010] --> [1512139706327837390]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getInterpolation(const vfc::float32_t) const' from true [1898973953744879010] to true [1512139706327837390]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 1898973953744879010 --> 1512139706327837390 - missing sequence 1512139706327837390
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [1898973953744879010] --> [1512139706327837390]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getInterpolation(const vfc::float32_t) const' from true [1898973953744879010] to true [1512139706327837390]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 1898973953744879010 --> 1512139706327837390 - missing sequence 1512139706327837390
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [635751086666514868] --> [395498143371739108]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'Location(const vfc::float32_t,const vfc::CRadian,const vfc::float32_t,const vfc::float32_t,const vfc::float32_t,const vfc::int32_t,const vfc::float32_t)' from true [635751086666514868] to true [395498143371739108]
[debug] [tid 73608] [sequence_diagram_generator.cc:163] Skipping activity 635751086666514868 --> 395498143371739108 - missing sequence 395498143371739108
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [848280990975368959] --> [2117836952607764917]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getValidTrackedLocations(const TrackedPolylines &) const' from true [848280990975368959] to true [2117836952607764917]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 848280990975368959 --> 2117836952607764917 - missing sequence 2117836952607764917
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [2117836952607764917] --> [201190617364001809]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getCyclesSinceMeasured() const' from true [2117836952607764917] to true [201190617364001809]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 2117836952607764917 --> 201190617364001809 - missing sequence 201190617364001809
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [2117836952607764917] --> [263640730606845517]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getX() const' from true [2117836952607764917] to true [263640730606845517]
[debug] [tid 73608] [sequence_diagram_generator.cc:163] Skipping activity 2117836952607764917 --> 263640730606845517 - missing sequence 263640730606845517
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [2117836952607764917] --> [1115386493799863632]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getY() const' from true [2117836952607764917] to true [1115386493799863632]
[debug] [tid 73608] [sequence_diagram_generator.cc:163] Skipping activity 2117836952607764917 --> 1115386493799863632 - missing sequence 1115386493799863632
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [2117836952607764917] --> [263640730606845517]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getX() const' from true [2117836952607764917] to true [263640730606845517]
[debug] [tid 73608] [sequence_diagram_generator.cc:163] Skipping activity 2117836952607764917 --> 263640730606845517 - missing sequence 263640730606845517
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [2117836952607764917] --> [1115386493799863632]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getY() const' from true [2117836952607764917] to true [1115386493799863632]
[debug] [tid 73608] [sequence_diagram_generator.cc:163] Skipping activity 2117836952607764917 --> 1115386493799863632 - missing sequence 1115386493799863632
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [2117836952607764917] --> [984077938161644863]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call '__calcEllipticalRatioForRegionQuery(const vfc::float32_t)__' from true [2117836952607764917] to true [984077938161644863]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 2117836952607764917 --> 984077938161644863 - missing sequence 984077938161644863
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [984077938161644863] --> [1512139706327837390]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'getInterpolation(const vfc::float32_t) const' from true [984077938161644863] to true [1512139706327837390]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 984077938161644863 --> 1512139706327837390 - missing sequence 1512139706327837390
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [984077938161644863] --> [1348448219752293813]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'LinearInterpolator(const vfc::float32_t,const vfc::float32_t,const vfc::float32_t,const vfc::float32_t)' from true [984077938161644863] to true [1348448219752293813]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 984077938161644863 --> 1348448219752293813 - missing sequence 1348448219752293813
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [984077938161644863] --> [1348448219752293813]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'LinearInterpolator(const vfc::float32_t,const vfc::float32_t,const vfc::float32_t,const vfc::float32_t)' from true [984077938161644863] to true [1348448219752293813]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 984077938161644863 --> 1348448219752293813 - missing sequence 1348448219752293813
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [2117836952607764917] --> [395498143371739108]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call 'Location(const vfc::float32_t,const vfc::CRadian,const vfc::float32_t,const vfc::float32_t,const vfc::float32_t,const vfc::int32_t,const vfc::float32_t)' from true [2117836952607764917] to true [395498143371739108]
[debug] [tid 73608] [sequence_diagram_generator.cc:163] Skipping activity 2117836952607764917 --> 395498143371739108 - missing sequence 395498143371739108
[debug] [tid 73608] [sequence_diagram_generator.cc:144] Generating message [848280990975368959] --> [1042686377999027375]
[debug] [tid 73608] [sequence_diagram_generator.cc:107] Generated call '' from true [848280990975368959] to true [1042686377999027375]
[debug] [tid 73608] [sequence_diagram_generator.cc:156] Creating activity 848280990975368959 --> 1042686377999027375 - missing sequence 1042686377999027375
[info] [tid 73608] [generators.cc:78] Written example_class_diagram diagram to /workspaces/repos/pj-dc_int/dc_fw/src/per/src/controllers/rsbloc/diagrams/example_class_diagram.puml

@bkryza
Copy link
Owner Author

bkryza commented Sep 28, 2023

@rob-weiss I'm actually AFK until tomorrow afternoon, and I cant see any apparent problem in the logs on my phone but I'll check tomorrow on my monitor...

@bkryza
Copy link
Owner Author

bkryza commented Sep 29, 2023

@rob-weiss I've checked the logs and it's very strange as the log message Generated call and Generating message are printed along with printing to the PlantUML output stream - so I'm not sure at the moment how it is possible that you are getting an empty file with these logs. If you could share the entire log output it could be helpful.

Also, could you try generating the diagram in MermaidJS and JSON formats as well to see if maybe this is an issue only related to PlantUML generator?

clang-uml -vvv -g json -g mermaid --remove-compile-flag -Wno-error=class-memaccess --remove-compile-flag -rdynamic 

@rob-weiss
Copy link

I had switched branches in the meantime and deleted the generated file. It suddenly worked, without any changes. VS Code usually displays changes in files that were changed in the background. No idea what the problem actually was though. Also the JSON and Mermaid output work fine. Sorry for bothering you and thank you so much for this wonderful tool, really appreciate it :)

@bkryza
Copy link
Owner Author

bkryza commented Sep 30, 2023

@rob-weiss No problem, glad it worked!

@bkryza bkryza added this to the Release 0.4.3 milestone Dec 23, 2023
@bkryza bkryza removed this from the Release 0.5.0 milestone Jan 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants