我正在考虑对现有的PHP项目进行一些静态代码分析,而我无法理解PHP_CodeSniffer,PHPMD和PHP Depend之间的区别.这些只是这些问题的替代方案,还是它们在某些方面相互补充?为什么开发人员可以选择其中一个?
关于Cyclomatic Complexity的这个问题使我更多地考虑静态代码分析.分析代码复杂性和一致性偶尔会有用,我想开始做更多.您推荐哪些工具(按语言)进行此类分析? 维基百科有很多工具,但以前有人试过哪些工具?
编辑:正如David所指出的,当涉及到基于C/UNIX的工具时,这不是一个完全没有问题的问题.
考虑以下代码:
public class Test
{
public async Task Do()
{
await Task.Delay(200);
using (var disposable = new Disposable())
{
disposable.Do();
}
}
}
public class Disposable : IDisposable
{
public void Do()
{
}
public void Dispose()
{
}
}
Run Code Online (Sandbox Code Playgroud)
当我在Visual Studio中运行代码分析时,我收到一个警告:
警告CA1001在测试时实现IDisposable.<Do> d__0因为它创建了以下IDisposable类型的成员:'Disposable'.
为什么我收到此消息?一次性类正确处理,我不会将它存储在任何地方.
此外,这似乎适用于分析仪:
public class Test
{
public void Do()
{
using (var disposable = new Disposable())
{
disposable.Do();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我刚收到一大堆(大多数是未记录的)C#代码,我想在潜入并开始重构之前想象它的结构.我在过去(使用其他语言)使用生成调用图的工具完成了这项工作.
你能推荐一个好的工具来促进C#中的结构发现吗?
UPDATE
除了这里提到的工具,我已经看到(通过电子管)人们说.NET Reflector和CLR Profiler具有此功能.有这些经验吗?
注意不是"功能依赖".是否有可用的工具允许我从源代码构建静态函数依赖图?向我指示哪些功能以图形方式依赖于哪些功能的东西.
我在IntelliJ IDEA中有一个项目,我使用Git/GitHub作为源代码控制.每次我尝试提交更改时,IntelliJ IDEA都会运行冗长的代码分析并搜索TODO.当它发现"问题"时,它会提示我是否要查看或提交.
我不希望运行预提交代码分析,我不希望IntelliJ IDEA向我询问结果.我似乎无法在常规IntelliJ IDEA项目/ IDE设置中找到任何设置来禁用此功能.我怎么能禁用它?
我一直在网上搜索,找到一些可以远程使用的东西.我尝试了各种基于HTML的工具来分析SVN存储库(用户提交,报告等),但没有一个是用户友好的.
我对桌面客户端(不依赖于我的系统上安装的外部svn.exe)感兴趣.分析存储库并创建报告.
有谁知道这样的节目?
是否有一个很好的资源来描述PMD规则集背后的"原因"?PMD的网站有"什么" - 每个规则的作用 - 但它没有描述为什么PMD有这个规则以及为什么忽略该规则会让你在现实世界中遇到麻烦.特别是,我有兴趣知道为什么PMD有AvoidInstantiatingObjectsInLoops和OnlyOneReturn规则(如果你需要创建一个对应于集合中每个对象的新对象,第一个似乎是必要的,第二个似乎在许多情况下是必要的根据某些标准返回一个值),但我真正想要的是一个描述大多数PMD规则背后"原因"的链接,因为这经常出现.
为了清楚起见,我知道我可以禁用它们以及如何做到这一点,我只是想知道为什么它们首先在那里.对不起,如果有一些明显的东西我错过了,但我在发布之前进行了谷歌搜索和搜索.我也明白,这些问题往往是"品味"的问题 - 我正在寻找的是规则的论点是什么以及有什么替代品.举一个具体的例子,你应该如何实现一个对应于循环中每个对象的对象(这是Java中的常见操作)而不在循环中实例化每个对象?
我们的团队使用自定义规则集的代码分析功能,如果我们忘记对方法参数执行null检查,则会导致构建失败.
但是,现在我们创建一个新的.NET Core项目时,它看起来并不像Code Analysis这些新项目的功能."项目属性"区域中没有用户界面,并且按照此处的建议向项目添加自定义规则集只会影响StyleCop Analyzers(SAxxxx规则).
有没有办法CAxxxx在.NET Core项目中启用Code Analysis()规则?
我的解决方案中有一个遗留项目没有评论和许多警告.我希望不会看到有关此特定项目的警告,但我希望在同一解决方案中看到其他项目的警告.
可能吗?
编辑:我的意思是具体项目的"所有警告".
code-analysis ×10
c# ×4
.net ×2
async-await ×1
call-graph ×1
commit ×1
git ×1
github ×1
haskell ×1
java ×1
php ×1
pmd ×1
svn ×1