Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions plugins/cpp_metrics/model/include/model/cppastnodemetrics.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ struct CppAstNodeMetrics
{
enum Type
{
PARAMETER_COUNT,
MCCABE,
LACK_OF_COHESION,
LACK_OF_COHESION_HS,
PARAMETER_COUNT = 1,
MCCABE = 2,
LACK_OF_COHESION = 3,
LACK_OF_COHESION_HS = 4,
};

#pragma db id auto
Expand Down
39 changes: 27 additions & 12 deletions plugins/cpp_metrics/service/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
include_directories(
include
${CMAKE_CURRENT_BINARY_DIR}/gen-cpp
${PROJECT_BINARY_DIR}/service/project/gen-cpp
${PROJECT_SOURCE_DIR}/service/project/include
${PROJECT_SOURCE_DIR}/model/include
${PROJECT_BINARY_DIR}/service/language/gen-cpp
${PLUGIN_DIR}/model/include
${PROJECT_SOURCE_DIR}/util/include
${PROJECT_SOURCE_DIR}/webserver/include)

Expand All @@ -9,35 +14,45 @@ include_directories(SYSTEM

add_custom_command(
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/gen-cpp/cxxmetrics_types.cpp
${CMAKE_CURRENT_BINARY_DIR}/gen-cpp/cxxmetrics_types.h
${CMAKE_CURRENT_BINARY_DIR}/gen-cpp/CppMetricsService.cpp
${CMAKE_CURRENT_BINARY_DIR}/gen-cpp/CppMetricsService.h
${CMAKE_CURRENT_BINARY_DIR}/gen-cpp
COMMAND
${THRIFT_EXECUTABLE} --gen cpp
-o ${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/cppmetrics.thrift
-I ${PROJECT_SOURCE_DIR}/service
${CMAKE_CURRENT_SOURCE_DIR}/cxxmetrics.thrift
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/cppmetrics.thrift
${CMAKE_CURRENT_SOURCE_DIR}/cxxmetrics.thrift
COMMENT
"Generating Thrift for cppmetrics.thrift")
"Generating Thrift for cxxmetrics.thrift")

add_library(cppmetricsthrift STATIC
add_library(cxxmetricsthrift STATIC
${CMAKE_CURRENT_BINARY_DIR}/gen-cpp/cxxmetrics_types.cpp
${CMAKE_CURRENT_BINARY_DIR}/gen-cpp/CppMetricsService.cpp)

target_compile_options(cppmetricsthrift PUBLIC -fPIC)
target_compile_options(cxxmetricsthrift PUBLIC -fPIC)

add_library(cppmetricsservice SHARED
add_dependencies(cxxmetricsthrift projectthrift)

add_library(cxxmetricsservice SHARED
src/cppmetricsservice.cpp
src/plugin.cpp)

target_compile_options(cppmetricsservice PUBLIC -Wno-unknown-pragmas)
#target_compile_options(cxxmetricsservice PUBLIC -Wno-unknown-pragmas)
Comment thread
intjftw marked this conversation as resolved.
Outdated

target_link_libraries(cppmetricsservice
cppmetricsmodel
model
target_link_libraries(cxxmetricsservice
util
${THRIFT_LIBTHRIFT_LIBRARIES}
model
cppmetricsmodel
projectthrift
projectservice
commonthrift
${ODB_LIBRARIES}
cppmetricsthrift)
cxxmetricsthrift)

install(TARGETS cppmetricsservice DESTINATION ${INSTALL_SERVICE_DIR})
install(TARGETS cxxmetricsservice DESTINATION ${INSTALL_SERVICE_DIR})
install_js_thrift()
7 changes: 0 additions & 7 deletions plugins/cpp_metrics/service/cppmetrics.thrift

This file was deleted.

20 changes: 20 additions & 0 deletions plugins/cpp_metrics/service/cxxmetrics.thrift
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
include "project/common.thrift"
include "project/project.thrift"

namespace cpp cc.service.cppmetrics
namespace java cc.service.cppmetrics

enum CppMetricsType
{
ParameterCount = 1,
McCabe = 2,
LackOfCohesion = 3,
LackOfCohesionHS = 4
}

service CppMetricsService
Comment thread
mcserep marked this conversation as resolved.
{
double getCppMetricsForAstNode(
Comment thread
mcserep marked this conversation as resolved.
Outdated
1:common.AstNodeId astNodeId,
2:CppMetricsType type)
}
23 changes: 20 additions & 3 deletions plugins/cpp_metrics/service/include/service/cppmetricsservice.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
#ifndef CC_SERVICE_DUMMY_DUMMYSSERVICE_H
#define CC_SERVICE_DUMMY_DUMMYSSERVICE_H
#ifndef CC_SERVICE_CPPMETRICSSERVICE_H
#define CC_SERVICE_CPPMETRICSSERVICE_H

#include <memory>
#include <vector>

#include <boost/program_options/variables_map.hpp>

#include <odb/database.hxx>

#include <model/cppastnodemetrics.h>
#include <model/cppastnodemetrics-odb.hxx>
#include <model/cppastnode.h>
#include <model/cppastnode-odb.hxx>

//#include <projectservice/projectservice.h>
Comment thread
intjftw marked this conversation as resolved.
Outdated

#include <odb/database.hxx>
#include <util/odbtransaction.h>
#include <webserver/servercontext.h>
Expand All @@ -27,7 +36,15 @@ class CppMetricsServiceHandler : virtual public CppMetricsServiceIf
std::shared_ptr<std::string> datadir_,
const cc::webserver::ServerContext& context_);

double getCppMetricsForAstNode(
const ::cc::service::core::AstNodeId& astNodeId_,
const CppMetricsType::type metrics_) override;

private:
double astNodeMetrics(
const ::cc::service::core::AstNodeId& astNodeId_,
const CppMetricsType::type type_);

std::shared_ptr<odb::database> _db;
util::OdbTransaction _transaction;

Expand All @@ -38,4 +55,4 @@ class CppMetricsServiceHandler : virtual public CppMetricsServiceIf
} // service
} // cc

#endif // CC_SERVICE_DUMMY_CPPMETRICSSSERVICE_H
#endif // CC_SERVICE_CPPMETRICSSERVICE_H
29 changes: 29 additions & 0 deletions plugins/cpp_metrics/service/src/cppmetricsservice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,35 @@ CppMetricsServiceHandler::CppMetricsServiceHandler(
{
}

double CppMetricsServiceHandler::getCppMetricsForAstNode(
const core::AstNodeId& astNodeId_,
const CppMetricsType::type metrics_)
{
return astNodeMetrics(astNodeId_, metrics_);
}

double CppMetricsServiceHandler::astNodeMetrics(
const ::cc::service::core::AstNodeId& astNodeId_,
const CppMetricsType::type type_)
{
_transaction([&, this](){
typedef odb::result<model::CppAstNode> CppAstNodeResult;
typedef odb::query<model::CppAstNode> CppAstNodeQuery;
typedef odb::result<model::CppAstNodeMetrics> CppAstNodeMetricsResult;
typedef odb::query<model::CppAstNodeMetrics> CppAstNodeMetricsQuery;

auto nodeMetric = _db->query<model::CppAstNodeMetrics>(
CppAstNodeMetricsQuery::astNodeId == std::stoull(astNodeId_) &&
CppAstNodeMetricsQuery::type ==
static_cast<model::CppAstNodeMetrics::Type>(type_));

if (nodeMetric.empty())
return -1.0;
Comment thread
mcserep marked this conversation as resolved.
Outdated

return nodeMetric.begin()->value;
});
}

} // cppmetrics
} // service
} // cc
16 changes: 10 additions & 6 deletions plugins/cpp_metrics/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
include_directories(
${PLUGIN_DIR}/model/include
${PLUGIN_DIR}/service/include
${CMAKE_CURRENT_BINARY_DIR}/../service/gen-cpp
${PROJECT_SOURCE_DIR}/model/include
${PROJECT_SOURCE_DIR}/plugins/cpp_metrics/model/include
${PROJECT_BINARY_DIR}/plugins/cpp_metrics/model/include)
include
${PLUGIN_DIR}/model/include
${PLUGIN_DIR}/service/include
${CMAKE_CURRENT_BINARY_DIR}/../service/gen-cpp
${PROJECT_SOURCE_DIR}/model/include
${PROJECT_BINARY_DIR}/service/project/gen-cpp
${PROJECT_SOURCE_DIR}/service/project/include
${PROJECT_SOURCE_DIR}/plugins/cpp_metrics/model/include
${PROJECT_BINARY_DIR}/plugins/cpp_metrics/model/include)

include_directories(SYSTEM
${THRIFT_LIBTHRIFT_INCLUDE_DIRS})
Expand All @@ -24,6 +27,7 @@ target_link_libraries(cppmetricsservicetest
model
cppmodel
cppservice
commonthrift
${Boost_LIBRARIES}
${GTEST_BOTH_LIBRARIES}
pthread)
Expand Down