我刚试过FxCop.它确实检测未使用的私有方法,但不检测未使用的公共 是否有可以下载的自定义规则,插件将检测未在同一程序集中调用的公共方法?
我正在尝试为twitter小部件的个人资料页面添加一个选项,我有一个用户可以添加他们的Twitter帐户的字段,下面显示小部件的预览.如果我输入一个帐户并单击保存并返回,它可以正常工作.但我想要做的是使其动态化,在文本字段上发生模糊事件时使用相应的帐户刷新小部件.
我有以下代码:
var twitterWidget = new TWTR.Widget({
version: 2,
type: 'profile',
rpp: 4,
interval: 6000,
width: 'auto',
height: 300,
theme: {
shell: {
background: '#cccccc',
color: '#333333'
},
tweets: {
background: '#ffffff',
color: '#333333',
links: '#0099cc'
}
},
features: {
scrollbar: false,
loop: false,
live: false,
hashtags: true,
timestamp: true,
avatars: true,
behavior: 'all'
}
});
twitterWidget.setUser(twitterUser).render().start();
$('#twitter_widget_id').change(function(){
twitterWidget.setUser($(this).val()).render().start();
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下它工作错误:它只显示我输入的所有帐户中的最新推文,一般来说我得到一个空的小部件.
如果我删除对象并创建一个新对象,它会使页面空白,然后添加小部件.
有没有人知道TWTR.Widget()的一些公共方法,如re-render()或类似的东西?
谢谢.
我有一个.Net(C#)解决方案.该解决方案包含大量项目.这些项目不是我实施的.它不是一个框架,它意味着我需要尽可能少的公共方法/属性.我的任务是确定未使用但存在于项目中的方法和属性.好吧,我可以找到不使用R#的私有方法.但是如何找到未使用的公共方法/属性是完全不清楚的.
我听说他们有NDepend工具,但它不是很简单的工具,是吗.
所以,问题是:请你指出一个工具,可以用来识别解决方案中没有使用的方法.我可以使用命令行工具或非常简单的东西.
UPD:我试过使用试用NDepend.
好吧,首先,似乎可以看到公共方法(属性表示为get_set_方法),这些方法未在此特定程序集中使用.
但NDepend无法识别公共方法是否来自另一个项目/程序集,这是解决方案的一部分,并将该方法显示为未使用.但是这是错误的.
UPD2:mcintyre321建议使用R#.请阅读下面的第一条评论.
是否可以使用FindBugs检测源树中未使用的方法?我在SO上看到了一些帖子,其中用户声称要这样做,有些人询问如何在FB中执行此操作以及其他人声称FB无法执行此操作.
有谁知道这是怎么做到的?我只对从其他地方没有明确调用的方法感兴趣,我不关心反射.
我想拿一个对象并从中删除一些方法.
即我内部有一个带有getter/setter的对象,我想让外部用户访问它.我不希望他们有权访问setter函数.
我不想通过从中删除方法来更改原始对象引用,但是创建一个新的对象引用,该引用指向同一个对象但其上的方法较少.
我有这个功能的实现
var readOnly = function(obj, publicData) {
// create a new object so that obj isn't effected
var object = new obj.constructor;
// remove all its public keys
_.each(object, function(val, key) {
delete object[key];
});
// bind all references to obj
_.bindAll(obj);
// for each public method give access to it
_.each(publicData, function(val) {
object[val] = obj[val];
});
return object;
};
Run Code Online (Sandbox Code Playgroud)
出于所有预期目的,返回的对象应该与原始对象相同,除了一些方法不再存在.内部this引用不应该在任何函数中中断.原型链不应该破裂.
我尝试从另一个类访问公共方法.我已经尝试了很多我在网络上找到的例子,但它们并没有按照我希望的方式工作.
Class1.h
@interface anything : NSObject {
IBOutlet NSTextField *label;
}
+ (void) setLabel:(NSString *)string;
- (void) changeLabel:(NSString *)string2;
Run Code Online (Sandbox Code Playgroud)
Class1.m
+ (void) setLabel:(NSString *)string {
Class1 *myClass1 = [[Class1 alloc] init];
[myClass1 changeLabel:string];
NSLog(@"setLabel called with string: %@", string);
}
- (void) changeLabel:(NSString *)string2 {
[label setStringValue:string2];
NSLog(@"changeLabel called with string: %@", string2);
}
Run Code Online (Sandbox Code Playgroud)
Class2.m
- (IBAction)buttonPressed {
[Class1 setLabel:@"Test"];
}
Run Code Online (Sandbox Code Playgroud)
非常奇怪的是,在NSLogs中,一切都很好,在两个NSLog中,字符串都是"Test",但textField的stringValue不会改变!
如果我有一个抽象类和该类的派生类,我是否正确,根据良好和实际的设计实践,派生类不应该提供额外的公共方法(它们应该只实现抽象类,并可选择覆盖父方法)?
此外,为每个派生类设置不同的构造方法签名是否可以接受?
我在Windows服务(.NET C#)中有一个计时器.我需要能够从外部程序更改已用值.如果计时器当前正在运行,我需要能够缩短外部程序的经过时间值.我想在服务中使用一个公共方法来改变计时器经过的值并重新启动计时器,但是外部程序可以在Windows服务上调用公共方法吗?
如果我有两个方法 - 一个public,一个protected返回对同一个成员的引用,我得到以下编译错误:
'Server::getManager': cannot access protected member declared in class 'Server'
Run Code Online (Sandbox Code Playgroud)
当我注释掉受保护的功能时,代码可以工作.你能告诉我为什么会这样吗?为什么编译器找不到同一个成员的公共函数?
class Manager
{
};
class Server
{
public:
const Manager & getManager() const { return m_man; }
protected:
Manager & getManager() { return m_man; } // <-- after removing this method I get no compilation error
private:
Manager m_man;
};
int main()
{
Server s;
const Manager& m = s.getManager();
return 0;
}
Run Code Online (Sandbox Code Playgroud) public-method ×10
.net ×3
methods ×2
c# ×1
c++ ×1
cocoa ×1
findbugs ×1
fxcop ×1
java ×1
javascript ×1
nstextfield ×1
object ×1
objective-c ×1
oop ×1
properties ×1
refactoring ×1
timer ×1
twitter ×1
widget ×1