LCOV - code coverage report
Current view: top level - oksutils/apps - oks_report_no_descriptions.cxx (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 55 0
Test Date: 2026-07-12 15:23:06 Functions: 0.0 % 3 0

            Line data    Source code
       1              : //
       2              : // DUNE DAQ modification notice:
       3              : // This file has been modified from the original ATLAS oks_utils source for the DUNE DAQ project.
       4              : // Fork baseline commit: c2e7dfc7 (2022-03-30).
       5              : // Renamed since fork: yes (from src/bin/oks_report_no_descriptions.cpp to apps/oks_report_no_descriptions.cxx).
       6              : //
       7              : 
       8              : /**
       9              :  *  \file oks_dump.cpp
      10              :  *
      11              :  *  This file is part of the OKS package.
      12              :  *  https://gitlab.cern.ch/atlas-tdaq-software/oks
      13              :  *
      14              :  *  Report classes without descriptions.
      15              :  */
      16              : 
      17              : #include <stdlib.h>
      18              : 
      19              : #include "oks/attribute.hpp"
      20              : #include "oks/relationship.hpp"
      21              : #include "oks/class.hpp"
      22              : #include "oks/kernel.hpp"
      23              : #include "oks/file.hpp"
      24              : #include "oks/exceptions.hpp"
      25              : 
      26              : using namespace dunedaq;
      27              : using namespace dunedaq::oks;
      28              : 
      29              : static void
      30            0 : printUsage(std::ostream& s)
      31              : {
      32            0 :   s << "Usage: oks_report_bad_classes [--help] database-file [database-file(s)]\n"
      33              :        "\n"
      34              :        "Options:\n"
      35              :        "    -h | --help     print this text\n"
      36              :        "\n"
      37              :        "Description:\n"
      38              :        "    Report classes, attributes and relationships without description.\n"
      39            0 :        "\n";
      40            0 : }
      41              : 
      42              : static void
      43            0 : report_class(const OksClass * c, bool no_description)
      44              : {
      45            0 :   std::cout << " * class \"" << c->get_name() << '\"';
      46              : 
      47            0 :   if (no_description)
      48            0 :     std::cout << " has no description";
      49              : 
      50            0 :   std::cout << " (from \"" << c->get_file()->get_short_file_name() << "\")\n";
      51            0 : }
      52              : 
      53              : int
      54            0 : main(int argc, char **argv)
      55              : {
      56            0 :   OksKernel kernel;
      57            0 :   kernel.set_silence_mode(true);
      58              : 
      59            0 :   try
      60              :     {
      61            0 :       for (int i = 1; i < argc; i++)
      62              :         {
      63            0 :           const char *cp = argv[i];
      64              : 
      65            0 :           if (!strcmp(cp, "-h") || !strcmp(cp, "--help"))
      66              :             {
      67            0 :               printUsage(std::cout);
      68              :               return EXIT_SUCCESS;
      69              :             }
      70              :           else
      71              :             {
      72            0 :               if (kernel.load_file(cp) == 0)
      73              :                 {
      74            0 :                   Oks::error_msg("oks_dump") << "\tCan not load file \"" << cp << "\", exiting...\n";
      75              :                   return EXIT_FAILURE;
      76              :                 }
      77              :             }
      78              :         }
      79              : 
      80            0 :       if (kernel.schema_files().empty())
      81              :         {
      82            0 :           Oks::error_msg("oks_dump") << "\tAt least one oks file have to be provided, exiting...\n";
      83              :           return EXIT_FAILURE;
      84              :         }
      85              :     }
      86            0 :   catch (oks::exception &ex)
      87              :     {
      88            0 :       std::cerr << "Caught oks exception:\n" << ex << std::endl;
      89            0 :       return EXIT_FAILURE;
      90            0 :     }
      91            0 :   catch (std::exception &e)
      92              :     {
      93            0 :       std::cerr << "Caught standard C++ exception: " << e.what() << std::endl;
      94            0 :       return EXIT_FAILURE;
      95            0 :     }
      96            0 :   catch (...)
      97              :     {
      98            0 :       std::cerr << "Caught unknown exception" << std::endl;
      99            0 :       return EXIT_FAILURE;
     100            0 :     }
     101              : 
     102            0 :   std::cout << "Processed schema files:\n";
     103            0 :   for (const auto &i : kernel.schema_files())
     104            0 :     std::cout << i.second->get_short_file_name() << std::endl;
     105              : 
     106            0 :   for (const auto i : kernel.classes())
     107              :     {
     108            0 :       bool printed(false);
     109              : 
     110            0 :       if (i.second->get_description().empty())
     111              :         {
     112            0 :           report_class(i.second, true);
     113              :           printed = true;
     114              :         }
     115              : 
     116            0 :       if (const std::list<OksAttribute*> *attrs = i.second->direct_attributes())
     117            0 :         for (const auto &j : *attrs)
     118              : 
     119            0 :           if (j->get_description().empty())
     120              :             {
     121            0 :               if (!printed)
     122              :                 {
     123            0 :                   report_class(i.second, false);
     124              :                   printed = true;
     125              :                 }
     126            0 :               std::cout << "   - attribute \"" << j->get_name() << "\" has no description\n";
     127              :             }
     128              : 
     129            0 :       if (const std::list<OksRelationship*> *rels = i.second->direct_relationships())
     130            0 :         for (const auto &j : *rels)
     131            0 :           if (j->get_description().empty())
     132              :             {
     133            0 :               if (!printed)
     134              :                 {
     135            0 :                   report_class(i.second, false);
     136              :                   printed = true;
     137              :                 }
     138            0 :               std::cout << "   - relationship \"" << j->get_name() << "\" has no description\n";
     139              :             }
     140              :     }
     141              : 
     142            0 :   return EXIT_SUCCESS;
     143            0 : }
        

Generated by: LCOV version 2.0-1