CQLinq
CQLinq
CQLinq 是 CppDepend 的代码查询语言。它基于 LINQ(语言集成查询),允许您编写查询来探索代码库、发现代码异味并强制执行编码标准。
使用 CQLinq,您可以编写查询来查找符合特定条件的类型、方法、字段和其他代码元素。您还可以编写在某些条件满足时发出警告的规则。
CQLinq 是一个用于代码探索、重构和质量保证的强大工具。它在 CppDepend 中被广泛用于各种分析任务。
CQLinq入门
要开始使用CQLinq,您可以使用 查询和规则浏览器 CppDepend 中的面板。此面板包含一个预定义查询和规则的列表,您可以针对代码库运行它们。
您也可以使用编写自己的查询 CQLinq编辑器 编辑器提供语法高亮、代码补全和错误检查,帮助您快速准确地编写查询。
CQLinq 查询使用类似 SQL 但具有 C# 风格的语法编写。下面是一个简单的 CQLinq 查询示例:
from m in Application.Methods where m.NbLinesOfCode > 30 select m
此查询查找应用程序中代码超过 30 行的所有方法。
查询示例
以下是一些可用于探索代码库的 CQLinq 查询示例:
查找参数超过 5 个的所有公共方法
from m in Application.Methods where m.IsPublic && m.NbParameters > 5 select m
查找实现特定接口的所有类型
from t in Application.Types
where t.Implement("MyNamespace.IMyInterface")
select t查找所有从未被调用的方法
from m in Application.Methods where m.NbMethodsCallingMe == 0 && m.IsPublic select m
代码规则
CQLinq也可用于编写 代码规则 代码规则是在满足特定条件时生成警告的查询。
要创建代码规则,您需要编写 CQLinq 查询并添加 warnif 或 failif 子句开头。这是一个例子:
warnif count > 0 from m in Application.Methods where m.CyclomaticComplexity > 20 select m
此规则会为圈复杂度大于 20 的每个方法生成警告。
度量与聚合
CQLinq支持广泛的 度量 供您在查询中使用。这些包括代码行数、圈复杂度和继承深度等代码度量,以及传入和传出耦合等依赖度量。
您也可以使用 聚合函数 在查询中计算整个代码库的统计信息。下面是一个示例:
from m in Application.Methods
select new { m, m.NbLinesOfCode, m.CyclomaticComplexity }