diff --git a/plugins/cpp_metrics/parser/include/cppmetricsparser/cppmetricsparser.h b/plugins/cpp_metrics/parser/include/cppmetricsparser/cppmetricsparser.h index 0e6ae31d4..1168f6391 100644 --- a/plugins/cpp_metrics/parser/include/cppmetricsparser/cppmetricsparser.h +++ b/plugins/cpp_metrics/parser/include/cppmetricsparser/cppmetricsparser.h @@ -198,7 +198,6 @@ class CppMetricsParser : public AbstractParser static const int functionMcCabePartitionMultiplier = 5; static const int functionBumpyRoadPartitionMultiplier = 5; static const int lackOfCohesionPartitionMultiplier = 25; - static const int afferentCouplingPartitionMultiplier = 25; }; } // parser diff --git a/plugins/cpp_metrics/parser/src/cppmetricsparser.cpp b/plugins/cpp_metrics/parser/src/cppmetricsparser.cpp index 054090bf6..7845a81df 100644 --- a/plugins/cpp_metrics/parser/src/cppmetricsparser.cpp +++ b/plugins/cpp_metrics/parser/src/cppmetricsparser.cpp @@ -103,55 +103,46 @@ bool CppMetricsParser::cleanupDatabase() void CppMetricsParser::afferentCouplingTypeLevel() { - - // Calculate the cohesion metric for all types on parallel threads. - parallelCalcMetric( - "Afferent coupling", - _threadCount * lackOfCohesionPartitionMultiplier, // number of jobs; adjust for granularity - getFilterPathsQuery(), - [&, this](const MetricsTasks& tasks) + util::OdbTransaction{_ctx.db}([&,this] { - util::OdbTransaction{_ctx.db}([&,this] - { - std::set typesFound; - std::unordered_map typeFoundCnt; - std::unordered_map astNodeIdOfType; + std::set typesFound; + std::unordered_map typeFoundCnt; + std::unordered_map astNodeIdOfType; - for (const model::AfferentRecordView& type - : _ctx.db->query()) + for (const model::AfferentRecordView& type + : _ctx.db->query()) + { + if (!cc::util::isRootedUnderAnyOf(_inputPaths, type.filePath)) { - if (!cc::util::isRootedUnderAnyOf(_inputPaths, type.filePath)) - { - continue; - } - - typesFound.clear(); - for (const model::CppMemberType& member : _ctx.db->query( - odb::query::typeHash == type.entityHash && - odb::query::kind == model::CppMemberType::Kind::Field)) - { - typesFound.insert(member.memberTypeHash); - } - - astNodeIdOfType[type.typeHash] = type.astNodeId; + continue; + } - for (const auto& t : typesFound) - { - typeFoundCnt[t]++; - } + typesFound.clear(); + for (const model::CppMemberType& member : _ctx.db->query( + odb::query::typeHash == type.entityHash && + odb::query::kind == model::CppMemberType::Kind::Field)) + { + typesFound.insert(member.memberTypeHash); } - for (const auto& pair : typeFoundCnt) + astNodeIdOfType[type.typeHash] = type.astNodeId; + + for (const auto& t : typesFound) { - model::CppAstNodeMetrics metric; - metric.astNodeId = astNodeIdOfType[pair.first]; - metric.type = model::CppAstNodeMetrics::Type::AFFERENT_COUPLING; - metric.value = pair.second; - _ctx.db->persist(metric); + typeFoundCnt[t]++; } - + } + + for (const auto& pair : typeFoundCnt) + { + model::CppAstNodeMetrics metric; + metric.astNodeId = astNodeIdOfType[pair.first]; + metric.type = model::CppAstNodeMetrics::Type::AFFERENT_COUPLING; + metric.value = pair.second; + _ctx.db->persist(metric); + } + - }); }); }