int cpp_main( int argc, char * argv[] )
{
  fs::initial_path();

  if ( argc > 1 && (std::strcmp( argv[1], "-help" ) == 0
    || std::strcmp( argv[1], "--help" ) == 0 ) )
  {
    std::clog << "Usage: inspect [-cvs] [options...]\n"
      "options:\n"
      << options();
    return 1;
  }

  bool license_ck = true;
  bool copyright_ck = true;
  bool crlf_ck = true;
  bool link_ck = true;
  bool long_name_ck = true;
  bool tab_ck = true;
  bool cvs = false;

  if ( argc > 1 && std::strcmp( argv[1], "-cvs" ) == 0 )
  {
    cvs = true;
    --argc; ++argv;
  }

  if ( argc > 1 && *argv[1] == '-' )
  {
    license_ck = false;
    copyright_ck = false;
    crlf_ck = false;
    link_ck = false;
    long_name_ck = false;
    tab_ck = false;
  }

  for(; argc > 1; --argc, ++argv )
  {
    if ( std::strcmp( argv[1], "-license" ) == 0 )
      license_ck = true;
    else if ( std::strcmp( argv[1], "-copyright" ) == 0 )
      copyright_ck = true;
    else if ( std::strcmp( argv[1], "-crlf" ) == 0 )
      crlf_ck = true;
    else if ( std::strcmp( argv[1], "-link" ) == 0 )
      link_ck = true;
    else if ( std::strcmp( argv[1], "-long_name" ) == 0 )
      long_name_ck = true;
    else if ( std::strcmp( argv[1], "-tab" ) == 0 )
      tab_ck = true;
    else
    {
      std::cerr << "unknown option: " << argv[1]
      << "\nvalid options are:\n"
      << options();
      return 1;
    }
  }

  inspector_list inspectors;

  if ( license_ck )
    inspectors.push_back( inspector_element( new boost::inspect::license_check ) );
  if ( copyright_ck )
    inspectors.push_back( inspector_element( new boost::inspect::copyright_check ) );
  if ( crlf_ck )
    inspectors.push_back( inspector_element( new boost::inspect::crlf_check ) );
  if ( link_ck )
    inspectors.push_back( inspector_element( new boost::inspect::link_check ) );
  if ( long_name_ck )
    inspectors.push_back( inspector_element( new boost::inspect::long_name_check ) );
  if ( tab_ck )
    inspectors.push_back( inspector_element( new boost::inspect::tab_check ) );

  // perform the actual inspection, using the requested type of iteration
  if ( cvs )
    visit_all<hack::cvs_iterator>( "boost-root",
      fs::initial_path(), inspectors );
  else
    visit_all<fs::directory_iterator>( "boost-root",
      fs::initial_path(), inspectors );

  // close
  for ( inspector_list::iterator itr = inspectors.begin();
        itr != inspectors.end(); ++itr )
  {
    itr->inspector->close();
  }

  char run_date[128];
  std::time_t tod;
  std::time( &tod );
  std::strftime( run_date, sizeof(run_date),
    "%X UTC, %A %d %B %Y", std::gmtime( &tod ) );

  std::cout << "<html>\n"
          "<head>\n"
          "<title>Boost Inspection Report</title>\n"
          "</head>\n"
          "<body bgcolor=\"#ffffff\" text=\"#000000\">\n"
          "<table border=\"0\">\n"
          "<tr>\n"
          "<td><img border=\"0\" src=\"../boost.png\" width=\"277\" "
          "height=\"86\"></td>\n"
          "<td align=\"center\">\n"
          "<h1>Boost Inspection Report</h1>\n"
          "<b>Run Date:</b> " << run_date  << "\n"
          "</td>\n"
          "</table>\n"
          "<p>An <a href=\"http://www.boost.org/tools/inspect/index.html\">inspection\n" 
          "program</a> checks each file in the current Boost CVS for various problems,\n" 
          "generating this web page as output. Problems detected include tabs in files,\n" 
          "missing copyrights, broken URL's, and similar misdemeanors.</p>\n"
          ;

  std::cout << "<h2>Totals</h2>\n<pre>"
            << file_count << " files scanned\n"
            << directory_count << " directories scanned\n"
            << error_count << " problems reported\n";

  std::cout << "\nproblem counts:\n";

  for ( inspector_list::iterator itr = inspectors.begin();
        itr != inspectors.end(); ++itr )
  {
    itr->inspector.reset();
  }

  std::sort( msgs.begin(), msgs.end() );

  if ( !msgs.empty() )
  {
    display_summary();
    display_details();
  }

  std::cout << "</body>\n"
               "</html>\n";
  return 0;
}
Exemple #2
0
int cpp_main( int argc, char * argv[] )
{
    fs::initial_path();

    if ( argc > 1 && (std::strcmp( argv[1], "-help" ) == 0
                      || std::strcmp( argv[1], "--help" ) == 0 ) )
    {
        std::clog << "Usage: inspect [-cvs] [options...]\n"
        "options:\n"
        << options();
        return 1;
    }

    bool license_ck = true;
    bool copyright_ck = true;
    bool crlf_ck = true;
    bool link_ck = true;
    bool long_name_ck = true;
    bool tab_ck = true;
    bool minmax_ck = true;
    bool cvs = false;

    if ( argc > 1 && std::strcmp( argv[1], "-cvs" ) == 0 )
    {
        cvs = true;
        --argc;
        ++argv;
    }

    if ( argc > 1 && *argv[1] == '-' )
    {
        license_ck = false;
        copyright_ck = false;
        crlf_ck = false;
        link_ck = false;
        long_name_ck = false;
        tab_ck = false;
        minmax_ck = false;
    }

    for (; argc > 1; --argc, ++argv )
    {
        if ( std::strcmp( argv[1], "-license" ) == 0 )
            license_ck = true;
        else if ( std::strcmp( argv[1], "-copyright" ) == 0 )
            copyright_ck = true;
        else if ( std::strcmp( argv[1], "-crlf" ) == 0 )
            crlf_ck = true;
        else if ( std::strcmp( argv[1], "-link" ) == 0 )
            link_ck = true;
        else if ( std::strcmp( argv[1], "-long_name" ) == 0 )
            long_name_ck = true;
        else if ( std::strcmp( argv[1], "-tab" ) == 0 )
            tab_ck = true;
        else if ( std::strcmp( argv[1], "-minmax" ) == 0 )
            minmax_ck = true;
        else
        {
            std::cerr << "unknown option: " << argv[1]
                      << "\nvalid options are:\n"
                      << options();
            return 1;
        }
    }

    inspector_list inspectors;

    if ( license_ck )
        inspectors.push_back( inspector_element( new boost::inspect::license_check ) );
    if ( copyright_ck )
        inspectors.push_back( inspector_element( new boost::inspect::copyright_check ) );
    if ( crlf_ck )
        inspectors.push_back( inspector_element( new boost::inspect::crlf_check ) );
    //if ( link_ck )
    //inspectors.push_back( inspector_element( new boost::inspect::link_check ) );
    if ( long_name_ck )
        inspectors.push_back( inspector_element( new boost::inspect::long_name_check ) );
    if ( tab_ck )
        inspectors.push_back( inspector_element( new boost::inspect::tab_check ) );
    if ( minmax_ck )
        inspectors.push_back( inspector_element( new boost::inspect::minmax_check ) );

    // perform the actual inspection, using the requested type of iteration
    if ( cvs )
        visit_all<hack::cvs_iterator>( "lifev-root",
                                       fs::initial_path(), inspectors );
    else
        visit_all<fs::directory_iterator>( "lifev-root",
                                           fs::initial_path(), inspectors );

    // close
    for ( inspector_list::iterator itr = inspectors.begin();
            itr != inspectors.end(); ++itr )
    {
        itr->inspector->close();
    }

    char run_date[128];
    std::time_t tod;
    std::time( &tod );
    std::strftime( run_date, sizeof(run_date),
                   "%X UTC, %A %d %B %Y", std::gmtime( &tod ) );

    std::cout << "<html>\n"
              "<head>\n"
              "<title>LifeV Inspection Report</title>\n"
              "<style type=\"text/css\">\n"
              << css_style() <<
              "</style>\n"
              "</head>\n"
              "<body bgcolor=\"#ffffff\" text=\"#000000\">\n"
              "<h1>LifeV Inspection Report(95% based on Boost Inspection tool)</h1>\n"
              "<p><b>Run Date:</b> " << run_date  << "</p>\n"
              "<h2>Introduction</h2>\n"
              "<p>The <a href=\"http://www.boost.org/tools/inspect/index.html\">inspection\n"
              "program</a> checks each file in the current Life CVS for various problems,\n"
              "generating this web page as output. Problems detected include tabs in files,\n"
              "missing copyrights, broken URL's, and similar misdemeanors.</p>\n";

    std::cout <<
              "<p> Differences between <tt>LifeV::inspect</tt> and <tt>boost::inspect</tt>\n"
              "<ul>\n"
              "<li>LifeV::inspect is good looking thanks to proper css usage :)</li>\n"
              "<li>LifeV::inspect does not check in admin, Templates and autom4te.cache</li>\n"
              "<li>LifeV::inspect checks for GPL and LGPL presence in header and not Boost License</li>\n"
              "<li>LifeV::inspect does not check for links</li>\n"
              "</ul>\n";

    std::cout << "<h2>Totals</h2>\n<pre>"
              << file_count << " files scanned\n"
              << directory_count << " directories scanned\n"
              << error_count << " problems reported\n";

    std::cout << "\nproblem counts:\n";

    for ( inspector_list::iterator itr = inspectors.begin();
            itr != inspectors.end(); ++itr )
    {
        itr->inspector.reset();
    }

    std::sort( msgs.begin(), msgs.end() );

    if ( !msgs.empty() )
    {
        display_summary();
        display_details();
    }

    std::cout << "</body>\n"
              "</html>\n";
    return 0;
}