我想确保某个包中的所有类的getter都遵循给定的模板.
例如,所有getter必须采用以下形式:
XXX getYYY(){
classLock.lock();
return YYY;
finally{
classLock.unlock();
}
}
基本上,我希望我的项目不会编译/运行,除非所有的getter都是那种形式.
最好的方法是什么?我更喜欢可以用作Eclipse插件的解决方案.
谢谢,Yoav
我正在尝试理解这个用于修改队列的C代码:
/*
* create or delete a queue
* PARAMETERS: QUEUE **qptr - space for, or pointer to, queue
* int flag - 1 for create, 0 for delete
* int size - max elements in queue
*/
void qManage(QUEUE **qptr, int flag, int size){
if(flag){
/* allocate a new queue */
*qptr = malloc(sizeof(QUEUE));
(*qptr)->head = (*qptr)->count = 0;
(*qptr)->que = malloc(size * sizeof(int));
(*qptr)->size = size;
}
else{
// delete the current queue
(void) free((*qptr)->que);
(void) free(*qptr);
} …Run Code Online (Sandbox Code Playgroud) 此代码的输出:
#define RECIPROCAL_1(x) 1/(x)
#define RECIPROCAL_2(x) 1/x
main()
{
float x=8.0, y;
y = RECIPROCAL_1(x+10.0);
printf("1/%3.1f = %8.5f\n", x, y);
y = RECIPROCAL_2(x+10.0);
printf("1/%3.1f = %8.5f\n", x, y);
}
Run Code Online (Sandbox Code Playgroud)
输出=
1/8.0 = 0.05556
1/8.0 = 10.12500
Run Code Online (Sandbox Code Playgroud)
我看不出它是如何工作的.我很感激任何提示.
我有一个对象,其中包含在验证对象时检查的业务规则列表.
在类的顶部,我创建了BusinessRule类型的静态字段,如下所示: -
public class SyncFile : Waterstons.Patterns.Entities.BaseEntity<Guid>
{
public static BusinessRule NameRequiredRule = new BusinessRule("Name", "The audit file must have a name");
....
protected override void Validate()
{
if (Id == default(Guid))
{
AddBrokenRule(IdRequiredRule);
}
....
Run Code Online (Sandbox Code Playgroud)
这导致代码分析抱怨我不应该有公共字段,除非它们是const.我不确定我可以根据我如何使用它们将它们定义为const.
那么有更好的方法来解决这个问题吗?我应该将它们作为属性公开吗?
public static BusinessRule _nameRequiredRule = new BusinessRule("Name", "The audit file must have a name");
public static BusinessRule Test
{
get { return _nameRequiredRule; }
}
Run Code Online (Sandbox Code Playgroud)
或者有更好的方法来解决这个问题吗?
我有这个Enum的扩展方法:
public static List<Enum> Values(this Enum theEnum)
{
return Enum.GetValues(theEnum.GetType()).Cast<Enum>().ToList();
}
Run Code Online (Sandbox Code Playgroud)
我收到了代码分析违规行为:
CA1062验证公共方法的参数
在外部可见方法'EnumExtensions.Values(this Enum)'中,在使用之前验证参数'theEnum'.
为什么会这样?如何验证参数?我无法检查null,因为枚举是一个不可为空的值类型.是否有其他检查应该在这里发生?
我有这样的代码:
package x.y.z;
public class Test
{
private static class MyRunnable implements Runnable
{
@Override
public void run()
{
System.out.println("World");
}
}
public static void main(String[] args)
{
final Runnable r1 = new Runnable() {
@Override
public void run()
{
System.out.println("Hello");
}
};
final Runnable r2 = new MyRunnable();
r1.run();
r2.run();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在研究一些代码分析模块,我想证明这r1是一个匿名类实例而r2不是.它们都是具有相同基类或接口的有效对象.我怎样才能做到这一点?
细化:正在加载所有类,因此我不需要分析文本.
我们使用一些扩展方法,它们允许我们编写类似的东西:
.Single(e => $"{nameof(SomeParameter)}: {SomeParameter}, ...")
Run Code Online (Sandbox Code Playgroud)
而不仅仅是
.Single()
Run Code Online (Sandbox Code Playgroud)
哪里e是例外.
这大大增加了日志记录体验,因为上层变量记录所有参数而不是无用的"序列不包含任何元素",这是底层产生的.
我需要编写一个测试,它会找到所有不兼容的代码,例如调用.Single().
当然,我可以使用正则表达式搜索或只是简单的香草文本搜索来查找从解决方案根开始的所有CS文件,也许这是可行的方法.我只是想知道是否已经有一个简单而已知的解决方案.
这就是我需要的:
轻松添加/删除规则:例如,查找所有文件,找到所有文件但不.Single()具有.Single(的形式.Single(e => $"- 这是考虑到组合的Where + Single代码等...
测试应该从xUnit运行.
非常感谢!
如果我使用 ESLint 那么是否有任何理由也使用 tslint?还是 ESLint 是替代品?
我有一个Arrays.sort(char[])以下列方式使用的代码:
void arrayAnalysis(String[] array){
for(int a=0; a<array.length;a++){
char[] letters = array[a].toCharArray();
Arrays.sort(letters);
...
for(int b=a+1; b<array.length;b++){
char[] letters2 = array[b].toCharArray();
Arrays.sort(letters2);
if(Arrays.equals(letters, letters2)
print("equal");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,n等于数组大小.由于嵌套的for循环,性能自动为O(n ^ 2).但是,我认为Arrays.sort(带有O(nlog(n)))也会影响性能并使其比O(n ^ 2)更差.这个想法是否正确?
最后的表现是O(n*nlog(n)*(n*nlog(n))吗?还是我离开了?
谢谢.
编辑:我应该补充一点,当n与数组大小相关时,Arrays.sort正在处理数组元素中的字母数.如果应该将其添加到性能分析中,这是我困惑的一部分.
编辑2:如果下选民留下评论为什么它被认为是一个糟糕的问题,那将是很酷的.
我在VS 2010中创建了一个项目.我想将其转换为VS 2013.当我构建它时,会出现错误:
CA0053运行代码分析时出错CA0053:无法加载规则程序集'c:\ program files\microsoft visual studio 10.0\team tools\static analysis tools\fxcop\rules\globalizationrurux.dll':无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.
我禁用了"在Build中启用代码分析"并运行,然后它不会给我一个错误.
我正在重构一些Java代码,我的目的不是根本不更改行为/流程,而只是对其进行清理,将其划分为方法等。
最后,我想做的是确保我的更改确实只是美学上的,并且行为/流程没有更改。
我知道可以通过编写全面的单元测试来“实现”,但是我想知道是否存在一些Java代码分析实用程序可以用来比较更改前后的代码流,因为从理论上讲,这听起来像这是可能的。
任何帮助表示赞赏!
Dart编辑器版本1.2.0.release(STABLE).Dart SDK 1.2.0版.
此源代码生成运行时异常.
void main() {
test(new Base());
}
void test(Child child) {
}
class Base {
}
class Child extends Base {
}
Run Code Online (Sandbox Code Playgroud)
我假设分析仪生成这样的东西.
The argument type 'Base' cannot be assigned to the parameter type 'Child'
Run Code Online (Sandbox Code Playgroud)
但是我只能在发生此异常(post factum)时在运行时检测到此错误.
Unhandled exception:
type 'Base' is not a subtype of type 'Child' of 'child'.
Run Code Online (Sandbox Code Playgroud) code-analysis software-quality error-detection dart dart-sdk
code-analysis ×13
java ×5
c# ×4
c ×2
debugging ×2
angular ×1
big-o ×1
class ×1
dart ×1
dart-sdk ×1
enums ×1
eslint ×1
flow ×1
performance ×1
pmd ×1
refactoring ×1
typescript ×1
validation ×1
xunit ×1
xunit.net ×1